1. 26 Oct, 2010 7 commits
    • Dan Carpenter's avatar
      affs: testing the wrong variable · 0e45b67d
      Dan Carpenter authored
      The intent was to verify that bh = affs_bread_ino(...) returned a valid
      pointer.  We checked "ext_bh" earlier in the function and it's valid
      here.
      Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      0e45b67d
    • Eric Dumazet's avatar
      fs: allow for more than 2^31 files · 7e360c38
      Eric Dumazet authored
      Andrew,
      
      Could you please review this patch, you probably are the right guy to
      take it, because it crosses fs and net trees.
      
      Note : /proc/sys/fs/file-nr is a read-only file, so this patch doesnt
      depend on previous patch (sysctl: fix min/max handling in
      __do_proc_doulongvec_minmax())
      
      Thanks !
      
      [PATCH V4] fs: allow for more than 2^31 files
      
      Robin Holt tried to boot a 16TB system and found af_unix was overflowing
      a 32bit value :
      
      <quote>
      
      We were seeing a failure which prevented boot.  The kernel was incapable
      of creating either a named pipe or unix domain socket.  This comes down
      to a common kernel function called unix_create1() which does:
      
              atomic_inc(&unix_nr_socks);
              if (atomic_read(&unix_nr_socks) > 2 * get_max_files())
                      goto out;
      
      The function get_max_files() is a simple return of files_stat.max_files.
      files_stat.max_files is a signed integer and is computed in
      fs/file_table.c's files_init().
      
              n = (mempages * (PAGE_SIZE / 1024)) / 10;
              files_stat.max_files = n;
      
      In our case, mempages (total_ram_pages) is approx 3,758,096,384
      (0xe0000000).  That leaves max_files at approximately 1,503,238,553.
      This causes 2 * get_max_files() to integer overflow.
      
      </quote>
      
      Fix is to let /proc/sys/fs/file-nr & /proc/sys/fs/file-max use long
      integers, and change af_unix to use an atomic_long_t instead of
      atomic_t.
      
      get_max_files() is changed to return an unsigned long.
      get_nr_files() is changed to return a long.
      
      unix_nr_socks is changed from atomic_t to atomic_long_t, while not
      strictly needed to address Robin problem.
      
      Before patch (on a 64bit kernel) :
      # echo 2147483648 >/proc/sys/fs/file-max
      # cat /proc/sys/fs/file-max
      -18446744071562067968
      
      After patch:
      # echo 2147483648 >/proc/sys/fs/file-max
      # cat /proc/sys/fs/file-max
      2147483648
      # cat /proc/sys/fs/file-nr
      704     0       2147483648
      Reported-by: default avatarRobin Holt <holt@sgi.com>
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Acked-by: default avatarDavid Miller <davem@davemloft.net>
      Reviewed-by: default avatarRobin Holt <holt@sgi.com>
      Tested-by: default avatarRobin Holt <holt@sgi.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      7e360c38
    • Jan Kara's avatar
      isofs: Fix isofs_get_blocks for 8TB files · fde214d4
      Jan Kara authored
      Currently isofs_get_blocks() was limited to handle only 4TB files on 32-bit
      architectures because of unnecessary use of iblock variable which was signed
      long. Just remove the variable. The error messages that were using this
      variable should have rather used b_off anyway because that is the block we
      are currently mapping.
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      fde214d4
    • Christoph Hellwig's avatar
      fs: kill block_prepare_write · ebdec241
      Christoph Hellwig authored
      __block_write_begin and block_prepare_write are identical except for slightly
      different calling conventions.  Convert all callers to the __block_write_begin
      calling conventions and drop block_prepare_write.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      ebdec241
    • Christoph Hellwig's avatar
      fs: mark destroy_inode static · 56b0dacf
      Christoph Hellwig authored
      Hugetlbfs used to need it, but after the destroy_inode and evict_inode
      changes it's not required anymore.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      56b0dacf
    • Christoph Hellwig's avatar
      fs: add sync_inode_metadata · c3765016
      Christoph Hellwig authored
      Add a new helper to write out the inode using the writeback code,
      that is including the correct dirty bit and list manipulation.  A few
      of filesystems already opencode this, and a lot of others should be
      using it instead of using write_inode_now which also writes out the
      data.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      c3765016
    • Christoph Hellwig's avatar
      fs: move permission check back into __lookup_hash · 81fca444
      Christoph Hellwig authored
      The caller that didn't need it is gone.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      81fca444
  2. 25 Oct, 2010 33 commits