25 Jul, 2012

1 commit

  • Pull misc udf, ext2, ext3, and isofs fixes from Jan Kara:
    "Assorted, mostly trivial, fixes for udf, ext2, ext3, and isofs. I'm
    on vacation and scarcely checking email since we are expecting baby
    any day now but these fixes should be safe to go in and I don't want
    to delay them unnecessarily."

    * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
    udf: avoid info leak on export
    isofs: avoid info leak on export
    udf: Improve table length check to avoid possible overflow
    ext3: Check return value of blkdev_issue_flush()
    jbd: Check return value of blkdev_issue_flush()
    udf: Do not decrement i_blocks when freeing indirect extent block
    udf: Fix memory leak when mounting
    ext2: cleanup the confused goto label
    UDF: Remove unnecessary variable "offset" from udf_fill_inode
    udf: stop using s_dirt
    ext3: force ro mount if ext3_setup_super() fails
    quota: fix checkpatch.pl warning by replacing with

    Linus Torvalds
     

23 Jul, 2012

1 commit

  • Split off part of dquot_quota_sync() which writes dquots into a quota file
    to a separate function. In the next patch we will use the function from
    filesystems and we do not want to abuse ->quota_sync quotactl callback more
    than necessary.

    Acked-by: Steven Whitehouse
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Jan Kara
    Signed-off-by: Al Viro

    Jan Kara
     

09 Jul, 2012

1 commit


16 May, 2012

3 commits

  • So far i_mutex was ranking above dqonoff_mutex and i_mutex on quota files
    was special and ranking below dqonoff_mutex (and several other locks).
    However there's no real need for i_mutex on quota files to be special.
    IO on quota files is serialized by dqio_mutex anyway so we don't need to
    take i_mutex when writing to quota files. Other places where we take i_mutex
    on quota file can accomodate standard i_mutex lock ranking, we only need
    to change the lock ranking to be dqonoff_mutex > i_mutex which is a matter
    of changing documentation because there's no place which would enforce
    ordering in the other direction.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • Signed-off-by: Jan Kara

    Jan Kara
     
  • When CONFIG_QUOTA_DEBUG is enabled we call inode_get_rsv_space() from
    add_dquot_ref() while holding i_lock. But inode_get_rsv_space() is trying
    to get i_lock as well resulting in double lock.

    Fix the problem by moving inode_get_rsv_space() call out of i_lock.

    Reported-and-analyzed-by: Jie Liu
    Signed-off-by: Jan Kara

    Jan Kara
     

29 Mar, 2012

1 commit

  • Pull ext3, UDF, and quota fixes from Jan Kara:
    "A couple of ext3 & UDF fixes and also one improvement in quota
    locking."

    * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
    ext3: fix start and len arguments handling in ext3_trim_fs()
    udf: Fix deadlock in udf_release_file()
    udf: Fix file entry logicalBlocksRecorded
    udf: Fix handling of i_blocks
    quota: Make quota code not call tty layer with dqptr_sem held
    udf: Init/maintain file entry checkpoint field
    ext3: Update ctime in ext3_splice_branch() only when needed
    ext3: Don't call dquot_free_block() if we don't update anything
    udf: Remove unnecessary OOM messages

    Linus Torvalds
     

24 Mar, 2012

1 commit

  • Pull XFS updates from Ben Myers:
    "Scalability improvements for dquots, log grant code cleanups, plus
    bugfixes and cleanups large and small"

    Fix up various trivial conflicts that were due to some of the earlier
    patches already having been integrated into v3.3 as bugfixes, and then
    there were development patches on top of those. Easily merged by just
    taking the newer version from the pulled branch.

    * 'for-linus' of git://oss.sgi.com/xfs/xfs: (45 commits)
    xfs: fallback to vmalloc for large buffers in xfs_getbmap
    xfs: fallback to vmalloc for large buffers in xfs_attrmulti_attr_get
    xfs: remove remaining scraps of struct xfs_iomap
    xfs: fix inode lookup race
    xfs: clean up minor sparse warnings
    xfs: remove the global xfs_Gqm structure
    xfs: remove the per-filesystem list of dquots
    xfs: use per-filesystem radix trees for dquot lookup
    xfs: per-filesystem dquot LRU lists
    xfs: use common code for quota statistics
    xfs: reimplement fdatasync support
    xfs: split in-core and on-disk inode log item fields
    xfs: make xfs_inode_item_size idempotent
    xfs: log timestamp updates
    xfs: log file size updates at I/O completion time
    xfs: log file size updates as part of unwritten extent conversion
    xfs: do not require an ioend for new EOF calculation
    xfs: use per-filesystem I/O completion workqueues
    quota: make Q_XQUOTASYNC a noop
    xfs: include reservations in quota reporting
    ...

    Linus Torvalds
     

22 Mar, 2012

1 commit

  • Pull security subsystem updates for 3.4 from James Morris:
    "The main addition here is the new Yama security module from Kees Cook,
    which was discussed at the Linux Security Summit last year. Its
    purpose is to collect miscellaneous DAC security enhancements in one
    place. This also marks a departure in policy for LSM modules, which
    were previously limited to being standalone access control systems.
    Chromium OS is using Yama, and I believe there are plans for Ubuntu,
    at least.

    This patchset also includes maintenance updates for AppArmor, TOMOYO
    and others."

    Fix trivial conflict in due to the jumo_label->static_key
    rename.

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (38 commits)
    AppArmor: Fix location of const qualifier on generated string tables
    TOMOYO: Return error if fails to delete a domain
    AppArmor: add const qualifiers to string arrays
    AppArmor: Add ability to load extended policy
    TOMOYO: Return appropriate value to poll().
    AppArmor: Move path failure information into aa_get_name and rename
    AppArmor: Update dfa matching routines.
    AppArmor: Minor cleanup of d_namespace_path to consolidate error handling
    AppArmor: Retrieve the dentry_path for error reporting when path lookup fails
    AppArmor: Add const qualifiers to generated string tables
    AppArmor: Fix oops in policy unpack auditing
    AppArmor: Fix error returned when a path lookup is disconnected
    KEYS: testing wrong bit for KEY_FLAG_REVOKED
    TOMOYO: Fix mount flags checking order.
    security: fix ima kconfig warning
    AppArmor: Fix the error case for chroot relative path name lookup
    AppArmor: fix mapping of META_READ to audit and quiet flags
    AppArmor: Fix underflow in xindex calculation
    AppArmor: Fix dropping of allowed operations that are force audited
    AppArmor: Add mising end of structure test to caps unpacking
    ...

    Linus Torvalds
     

01 Mar, 2012

2 commits

  • dqptr_sem can be called from slab reclaim. tty layer uses GFP_KERNEL mask for
    allocation so it can end up calling slab reclaim. Given quota code can call
    into tty layer to print warning this creates possibility for lock inversion
    between tty->atomic_write_lock and dqptr_sem.

    Using direct printing of warnings from quota layer is obsolete but since it's
    easy enough to change quota code to not hold any locks when printing warnings,
    let's just do it. It seems like a good thing to do even when we use netlink
    layer to transmit warnings to userspace.

    Reported-by: Markus
    Signed-off-by: Jan Kara

    Jan Kara
     
  • Now that XFS takes quota reservations into account there is no need to flush
    anything before reporting quotas - in addition to beeing fully transactional
    all quota information is also 100% coherent with the rest of the filesystem
    now.

    Reviewed-by: Dave Chinner
    Signed-off-by: Christoph Hellwig
    Signed-off-by: Ben Myers

    Christoph Hellwig
     

14 Feb, 2012

2 commits

  • This script causes a kernel deadlock:
    set -e
    DEVICE=/dev/vg1/linear
    lvchange -ay $DEVICE
    mkfs.ext3 $DEVICE
    mount -t ext3 -o usrquota,grpquota $DEVICE /mnt/test
    quotacheck -gu /mnt/test
    umount /mnt/test
    mount -t ext3 -o usrquota,grpquota $DEVICE /mnt/test
    quotaon /mnt/test
    dmsetup suspend $DEVICE
    setquota -u root 1 2 3 4 /mnt/test &
    sleep 1
    dmsetup resume $DEVICE

    setquota acquired semaphore s_umount for read and then tried to perform a
    transaction (and waits because the device is suspended). dmsetup resume tries
    to acquire s_umount for write before resuming the device (and waits for
    setquota).

    Fix the deadlock by grabbing a thawed superblock for quota commands which need
    it.

    Reported-by: Mikulas Patocka
    Signed-off-by: Jan Kara
    Signed-off-by: Al Viro

    Jan Kara
     
  • Trim security.h

    Signed-off-by: Al Viro
    Signed-off-by: James Morris

    Al Viro
     

12 Jan, 2012

1 commit


07 Jan, 2012

1 commit


04 Jan, 2012

1 commit

  • Move invalidate_bdev, block_sync_page into fs/block_dev.c. Export
    kill_bdev as well, so brd doesn't have to open code it. Reduce
    buffer_head.h requirement accordingly.

    Removed a rather large comment from invalidate_bdev, as it looked a bit
    obsolete to bother moving. The small comment replacing it says enough.

    Signed-off-by: Nick Piggin
    Cc: Al Viro
    Cc: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Signed-off-by: Al Viro

    Al Viro
     

07 Nov, 2011

1 commit

  • * 'writeback-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:
    writeback: Add a 'reason' to wb_writeback_work
    writeback: send work item to queue_io, move_expired_inodes
    writeback: trace event balance_dirty_pages
    writeback: trace event bdi_dirty_ratelimit
    writeback: fix ppc compile warnings on do_div(long long, unsigned long)
    writeback: per-bdi background threshold
    writeback: dirty position control - bdi reserve area
    writeback: control dirty pause time
    writeback: limit max dirty pause time
    writeback: IO-less balance_dirty_pages()
    writeback: per task dirty rate limit
    writeback: stabilize bdi->dirty_ratelimit
    writeback: dirty rate control
    writeback: add bg_threshold parameter to __bdi_update_bandwidth()
    writeback: dirty position control
    writeback: account per-bdi accumulated dirtied pages

    Linus Torvalds
     

03 Nov, 2011

1 commit

  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
    udf: Cleanup metadata flags handling
    udf: Skip mirror metadata FE loading when metadata FE is ok
    ext3: Allow quota file use root reservation
    udf: Remove web reference from UDF MAINTAINERS entry
    quota: Drop path reference on error exit from quotactl
    udf: Neaten udf_debug uses
    udf: Neaten logging output, use vsprintf extension %pV
    udf: Convert printks to pr_
    udf: Rename udf_warning to udf_warn
    udf: Rename udf_error to udf_err
    udf: Promote some debugging messages to udf_error
    ext3: Remove the obsolete broken EXT3_IOC32_WAIT_FOR_READONLY.
    udf: Add readpages support for udf.
    ext3/balloc.c: local functions should be static
    ext2: fix the outdated comment in ext2_nfs_get_inode()
    ext3: remove deprecated oldalloc
    fs/ext3/balloc.c: delete useless initialization
    fs/ext2/balloc.c: delete useless initialization
    ext3: fix message in ext3_remount for rw-remount case
    ext3: Remove i_mutex from ext3_sync_file()

    Fix up trivial (printf format cleanup) conflicts in fs/udf/udfdecl.h

    Linus Torvalds
     

01 Nov, 2011

1 commit


31 Oct, 2011

1 commit

  • This creates a new 'reason' field in a wb_writeback_work
    structure, which unambiguously identifies who initiates
    writeback activity. A 'wb_reason' enumeration has been
    added to writeback.h, to enumerate the possible reasons.

    The 'writeback_work_class' and tracepoint event class and
    'writeback_queue_io' tracepoints are updated to include the
    symbolic 'reason' in all trace events.

    And the 'writeback_inodes_sbXXX' family of routines has had
    a wb_stats parameter added to them, so callers can specify
    why writeback is being started.

    Acked-by: Jan Kara
    Signed-off-by: Curt Wohlgemuth
    Signed-off-by: Wu Fengguang

    Curt Wohlgemuth
     

27 Sep, 2011

1 commit

  • The concensus seems to be that system calls such as stat() etc should
    not trigger an automount. Neither should the l* versions.

    This patch therefore adds a LOOKUP_AUTOMOUNT flag to tag those lookups
    that _should_ trigger an automount on the last path element.

    Signed-off-by: Trond Myklebust
    [ Edited to leave out the cases that are already covered by LOOKUP_OPEN,
    LOOKUP_DIRECTORY and LOOKUP_CREATE - all of which also fundamentally
    force automounting for their own reasons - Linus ]
    Signed-off-by: Linus Torvalds

    Trond Myklebust
     

25 May, 2011

1 commit

  • Change each shrinker's API by consolidating the existing parameters into
    shrink_control struct. This will simplify any further features added w/o
    touching each file of shrinker.

    [akpm@linux-foundation.org: fix build]
    [akpm@linux-foundation.org: fix warning]
    [kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API]
    [akpm@linux-foundation.org: fix xfs warning]
    [akpm@linux-foundation.org: update gfs2]
    Signed-off-by: Ying Han
    Cc: KOSAKI Motohiro
    Cc: Minchan Kim
    Acked-by: Pavel Emelyanov
    Cc: KAMEZAWA Hiroyuki
    Cc: Mel Gorman
    Acked-by: Rik van Riel
    Cc: Johannes Weiner
    Cc: Hugh Dickins
    Cc: Dave Hansen
    Cc: Steven Whitehouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ying Han
     

08 Apr, 2011

1 commit


01 Apr, 2011

1 commit

  • There's no reason to write quota info in dquot_commit(). The writing is a
    relict from the old days when we didn't have dquot_acquire() and
    dquot_release() and thus dquot_commit() could have created / removed quota
    structures from the file. These days dquot_commit() only updates usage counters
    / limits in quota structure and thus there's no need to write quota info.

    This also fixes an issue with journaling filesystem which didn't reserve
    enough space in the transaction for write of quota info (it could have been
    dirty at the time of dquot_commit() because of a race with other operation
    changing it).

    CC: stable@kernel.org
    Reported-and-tested-by: Lukas Czerner
    Signed-off-by: Jan Kara

    Jan Kara
     

31 Mar, 2011

1 commit


25 Mar, 2011

2 commits

  • Protect the per-sb inode list with a new global lock
    inode_sb_list_lock and use it to protect the list manipulations and
    traversals. This lock replaces the inode_lock as the inodes on the
    list can be validity checked while holding the inode->i_lock and
    hence the inode_lock is no longer needed to protect the list.

    Signed-off-by: Dave Chinner
    Signed-off-by: Al Viro

    Dave Chinner
     
  • Protect inode state transitions and validity checks with the
    inode->i_lock. This enables us to make inode state transitions
    independently of the inode_lock and is the first step to peeling
    away the inode_lock from the code.

    This requires that __iget() is done atomically with i_state checks
    during list traversals so that we don't race with another thread
    marking the inode I_FREEING between the state check and grabbing the
    reference.

    Also remove the unlock_new_inode() memory barrier optimisation
    required to avoid taking the inode_lock when clearing I_NEW.
    Simplify the code by simply taking the inode->i_lock around the
    state change and wakeup. Because the wakeup is no longer tricky,
    remove the wake_up_inode() function and open code the wakeup where
    necessary.

    Signed-off-by: Dave Chinner
    Signed-off-by: Al Viro

    Dave Chinner
     

24 Feb, 2011

1 commit


13 Jan, 2011

1 commit

  • As Al Viro pointed out path resolution during Q_QUOTAON calls to quotactl
    is prone to deadlocks. We hold s_umount semaphore for reading during the
    path resolution and resolution itself may need to acquire the semaphore
    for writing when e. g. autofs mountpoint is passed.

    Solve the problem by performing the resolution before we get hold of the
    superblock (and thus s_umount semaphore). The whole thing is complicated
    by the fact that some filesystems (OCFS2) ignore the path argument. So to
    distinguish between filesystem which want the path and which do not we
    introduce new .quota_on_meta callback which does not get the path. OCFS2
    then uses this callback instead of old .quota_on.

    CC: Al Viro
    CC: Christoph Hellwig
    CC: Ted Ts'o
    CC: Joel Becker
    Signed-off-by: Jan Kara

    Jan Kara
     

11 Jan, 2011

1 commit


28 Oct, 2010

3 commits

  • When quotaon(8) races with __dquot_initialize() or dqget() fails because
    of EIO, ENOSPC, or similar error, we could possibly dereference NULL pointer
    in inode->i_dquot[cnt]. Add proper checking.

    Reported-by: Dmitry Monakhov
    Signed-off-by: Jan Kara

    Jan Kara
     
  • __dquot_transfer accidentally called flush_warnings for a wrong set of
    dquots which could result in quota warnings being issued with a wrong
    identification. Also when operation fails because of EDQUOT, there's no
    need check for issuing information message about user getting below limits
    (no transfer has actually happened).

    Signed-off-by: Jan Kara

    Jan Kara
     
  • I've got following lockup:
    dquot_disable dquot_transfer
    ->dqget()
    sb_has_quota_active
    dqopt->flags &= ~dquot_state_flag(f, cnt) atomic_inc(dq->dq_count)
    ->drop_dquot_ref(sb, cnt);
    down_write(dqptr_sem)
    inode->i_dquot[cnt] = NULL ->__dquot_transfer
    invalidate_dquots(sb, cnt); down_write(&dqptr_sem)
    ->wait for dq_wait_unused inode->i_dquot = new_dquot
    /* wait forever */ ^^^^New quota user^^^^^^

    We cannot allow new references to dquots from inodes after drop_dquot_ref()
    has removed them. We have to recheck quota state under dqptr_sem and before
    assignment, as we do it in dquot_initialize().

    Signed-off-by: Dmitry Monakhov
    Signed-off-by: Jan Kara

    Dmitry
     

05 Oct, 2010

1 commit

  • Remove "depends on" line from QUOTACTL config option and rather select
    the option explicitely from config options which need it. It makes more
    sense this way and also fixes Kconfig warning due to GFS2 selecting
    QUOTACTL but QUOTACTL not depending on it.

    Signed-off-by: Jan Kara

    Jan Kara
     

11 Aug, 2010

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)
    no need for list_for_each_entry_safe()/resetting with superblock list
    Fix sget() race with failing mount
    vfs: don't hold s_umount over close_bdev_exclusive() call
    sysv: do not mark superblock dirty on remount
    sysv: do not mark superblock dirty on mount
    btrfs: remove junk sb_dirt change
    BFS: clean up the superblock usage
    AFFS: wait for sb synchronization when needed
    AFFS: clean up dirty flag usage
    cifs: truncate fallout
    mbcache: fix shrinker function return value
    mbcache: Remove unused features
    add f_flags to struct statfs(64)
    pass a struct path to vfs_statfs
    update VFS documentation for method changes.
    All filesystems that need invalidate_inode_buffers() are doing that explicitly
    convert remaining ->clear_inode() to ->evict_inode()
    Make ->drop_inode() just return whether inode needs to be dropped
    fs/inode.c:clear_inode() is gone
    fs/inode.c:evict() doesn't care about delete vs. non-delete paths now
    ...

    Fix up trivial conflicts in fs/nilfs2/super.c

    Linus Torvalds
     

10 Aug, 2010

1 commit

  • add I_CLEAR instead of replacing I_FREEING with it. I_CLEAR is
    equivalent to I_FREEING for almost all code looking at either;
    it's there to keep track of having called clear_inode() exactly
    once per inode lifetime, at some point after having set I_FREEING.
    I_CLEAR and I_FREEING never get set at the same time with the
    current code, so we can switch to setting i_flags to I_FREEING | I_CLEAR
    instead of I_CLEAR without loss of information. As the result of
    such change, checks become simpler and the amount of code that needs
    to know about I_CLEAR shrinks a lot.

    Signed-off-by: Al Viro

    Al Viro
     

08 Aug, 2010

1 commit

  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:
    ext3: Fix dirtying of journalled buffers in data=journal mode
    ext3: default to ordered mode
    quota: Use mark_inode_dirty_sync instead of mark_inode_dirty
    quota: Change quota error message to print out disk and function name
    MAINTAINERS: Update entries of ext2 and ext3
    MAINTAINERS: Update address of Andreas Dilger
    ext3: Avoid filesystem corruption after a crash under heavy delete load
    ext3: remove vestiges of nobh support
    ext3: Fix set but unused variables
    quota: clean up quota active checks
    quota: Clean up the namespace in dqblk_xfs.h
    quota: check quota reservation on remove_dquot_ref

    Linus Torvalds
     

23 Jul, 2010

1 commit


21 Jul, 2010

2 commits

  • The current quota error message doesn't always print the disk name, so
    it is hard to identify the "bad" disk when quota error happens.

    This patch changes the standardized quota error message to print out disk name
    and function name. It also uses a combination of cpp macro and inline function
    to provide better type checking and to lower the text size of the message.

    [Jan Kara: Export __quota_error]

    Signed-off-by: Jiaying Zhang
    Signed-off-by: Jan Kara

    Jiaying Zhang
     
  • The various quota operations check for any quota beeing active on
    a superblock, and the inode not having the noquota flag.

    Merge these two checks into a dquot_active check and move that
    into dquot.c as that's the only place where it's needed.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jan Kara

    Christoph Hellwig