Re: [RFC 3/3] BKL: Remove default_llseek()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 30, 2009 at 05:30:04PM +0200, Jan Blunck wrote:
> default_llseek() is using the big kernel lock. There are only two users of
> that function that can both can be converted to use generic_file_llseek(). So
> get rid of default_llseek() completely.

I don't think it's that easy.  The are two crucial differences between
generic_file_llseek and default_llseek:

 - default_llseek uses the BKL for locking, and generic_file_llseek uses
   i_mutex
 - generic_file_llseek checks inode->i_sb->s_maxbytes and default_llseek
   doesn't.

The first could cause tons of problems, although it most likely doesn't.
The second is much nastier.  There are lots of non-regular file objects
residing on filesystems.  For character devices or synthetics files
the pagecache limitation doesn't make any sense at all and I'm pretty
sure it will break things.  For directories it might or might now
although in general we really need i_mutex in directories to protect
against namespace operations.

The only way to get rid of default_llseek is to audit all
file_operations instances, and make sure they all have a lssek method
that makes sense or call nonseekable_open during open to make sure
we error out early in in vfs_llseek.  This taks could be split
by e.g. taking care of character devices first, or files on procfs.
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux