Re: why does fsync() on a tmpfs directory give EINVAL?

From: Andrew Morton
Date: Thu Jun 16 2005 - 20:59:24 EST


Chris Friesen <cfriesen@xxxxxxxxxx> wrote:
>
> Andrew Morton wrote:
> > Chris Friesen <cfriesen@xxxxxxxxxx> wrote:
>
> >>Currently tmpfs reuses the simple_dir_operations from libfs.c.
> >>
> >>Would it make sense to add the empty fsync() function there, and have
> >>all other users pick it up as well? Is this likely to break stuff?
> >
> > Isn't simple_sync_file() suitable?
>
> I think it would be fine. The issue is that currently for directories
> tmpfs doesn't have it's own set of operations--it reuses the
> simple_dir_operations set of file ops from libfs.
>
> We could make a tmpfs-specific set of operations that is identical to
> simple_dir_operations but with the addition of setting the fsync
> function to simple_sync_file().
>
> Alternately, if it makes sense for all the users of
> simple_dir_operations we could modify it directly and all of the other
> users of simple_dir_operations would get the change for free. I don't
> know enough about the other filesystems to know if this makes sense or not.
>

hm, what a lot of filesystems.

bix:/usr/src/linux-2.6.12-rc6> grep -rl simple_dir_operations .
./drivers/usb/gadget/inode.c
./drivers/usb/core/inode.c
./drivers/isdn/capi/capifs.c
./drivers/oprofile/oprofilefs.c
./drivers/misc/ibmasm/ibmasmfs.c
./fs/libfs.c
./fs/debugfs/inode.c
./fs/autofs/inode.c
./fs/devpts/inode.c
./fs/hugetlbfs/inode.c
./fs/ramfs/inode.c
./include/linux/fs.h
./net/sunrpc/rpc_pipe.c
./kernel/cpuset.c
./security/selinux/selinuxfs.c
./ipc/mqueue.c
./mm/shmem.c

I can't think of any reason why any of these would want fsync(dir_fd) to
return -EINVAL.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/