List of filesystems to use generic checkpoint fops

Matt Helsley matthltc at us.ibm.com
Thu Mar 26 21:05:34 PDT 2009


In case anyone's curious here is my list of filesystems which I think should
have generic_file_checkpoint fops (31):
	adfs
	affs
	befs
	bfs
	btrfs
	cramfs
	ecryptfs
	efs
	fat
	freevxfs
	hfs
	hfsplus
	hpfs
	hppfs
	isofs
	jffs2
	jfs
	minix
	ntfs
	omfs
	openpromfs
	qnx4
	ramfs
	reiserfs
	romfs
	squashfs
	sysv
	ubifs
	udf
	ufs
	xfs

I also added the checkpoint operation to generic_ro_fops since it's used
only in the set of filesystems listed above. For the curious:
	befs
	cramfs
	efs
	freevxfs
	isofs
	romfs
	squashfs

I've got the patches split out per-filesystem even though they are
incredibly tiny. I'll keep rebasing them on the latest git trees from Dave's
kernel.org tree until the checkpoint fop set is ready to be sent to Oren.

The net result is I haven't added any checkpoint operations to filesystems
outside the lists above.

Open ramfs directories aren't checkpointable because, like many special
filesystems, the directories are kept in the dcache with
simple_dir_operations from libfs.c. Filesystems that use it include:
	autofs
	cifs
	debugfs
	devpts
	fuse
	hugetlbfs
	ocfs2
	ramfs

I think I could fix this with a private copy of simple_dir_operations but I
wasn't certain it would work or that it was the best way to handle it. So I've
postponed full ramfs checkpoint support. This means that ramfs files are always
checkpointable but the directories aren't.

A few "regular" filesystems have /proc or debugfs contents (many of them
using the seq_file API). These tend to contain information about the
filesystem or special control interfaces (btrfs). I'm not quite sure
what we'll want to do with these for now. I think eventually we'd add a
checkpoint operation to the seq_file API. My hunch is the majority
of seq_files won't be checkpointable. I also suspect that the
control files won't usually care what the file position is so we may be
able to add generic_file_checkpoint to those after a more careful review of
each one.

It may be easier to remember what's left "TODO" in fs/*:
	9p
	afs
	autofs[4]
	cifs
	coda
	configfs
	debugfs
	devpts
	ext[234] (Dave's handling this)
	(anything that uses dlm)
	fuse
	gfs2
	hostfs
	hugetlbfs
	(anything that uses jbd[2])
	ncpfs
	nfs (I've got patches for NFS but I don't trust them yet and they lack
		support for the seq_file interfaces in /proc)
	ocfs2
	proc (HUGE)
	ramfs
	smbfs (deprecated, so .. never?)
	sysfs

	bad_inode.c (unused outside bad_inode.c so low priority??)
	binfmt_misc.c
	block_dev.c
	char_dev.c (def_chr_fops)
	epoll (eventpoll.c)
	eventfd.c
	fifo.c
	filesystems.c (/proc/filesystems)
	no-block.c
	notify/*
	select.c
	signalfd.c
	locks.c
	pipe.c

I haven't looked outside of fs/* for anything that uses struct file_operations 
-- I'm assuming most of that is for "irregular" filesystems :).

Cheers,
	-Matt


More information about the Containers mailing list