23 Jun, 2016

1 commit

  • During page migrations UBIFS might get confused
    and the following assert triggers:
    [ 213.480000] UBIFS assert failed in ubifs_set_page_dirty at 1451 (pid 436)
    [ 213.490000] CPU: 0 PID: 436 Comm: drm-stress-test Not tainted 4.4.4-00176-geaa802524636-dirty #1008
    [ 213.490000] Hardware name: Allwinner sun4i/sun5i Families
    [ 213.490000] [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
    [ 213.490000] [] (show_stack) from [] (dump_stack+0x8c/0xa0)
    [ 213.490000] [] (dump_stack) from [] (ubifs_set_page_dirty+0x44/0x50)
    [ 213.490000] [] (ubifs_set_page_dirty) from [] (try_to_unmap_one+0x10c/0x3a8)
    [ 213.490000] [] (try_to_unmap_one) from [] (rmap_walk+0xb4/0x290)
    [ 213.490000] [] (rmap_walk) from [] (try_to_unmap+0x64/0x80)
    [ 213.490000] [] (try_to_unmap) from [] (migrate_pages+0x328/0x7a0)
    [ 213.490000] [] (migrate_pages) from [] (alloc_contig_range+0x168/0x2f4)
    [ 213.490000] [] (alloc_contig_range) from [] (cma_alloc+0x170/0x2c0)
    [ 213.490000] [] (cma_alloc) from [] (__alloc_from_contiguous+0x38/0xd8)
    [ 213.490000] [] (__alloc_from_contiguous) from [] (__dma_alloc+0x23c/0x274)
    [ 213.490000] [] (__dma_alloc) from [] (arm_dma_alloc+0x54/0x5c)
    [ 213.490000] [] (arm_dma_alloc) from [] (drm_gem_cma_create+0xb8/0xf0)
    [ 213.490000] [] (drm_gem_cma_create) from [] (drm_gem_cma_create_with_handle+0x1c/0xe8)
    [ 213.490000] [] (drm_gem_cma_create_with_handle) from [] (drm_gem_cma_dumb_create+0x3c/0x48)
    [ 213.490000] [] (drm_gem_cma_dumb_create) from [] (drm_ioctl+0x12c/0x444)
    [ 213.490000] [] (drm_ioctl) from [] (do_vfs_ioctl+0x3f4/0x614)
    [ 213.490000] [] (do_vfs_ioctl) from [] (SyS_ioctl+0x34/0x5c)
    [ 213.490000] [] (SyS_ioctl) from [] (ret_fast_syscall+0x0/0x34)

    UBIFS is using PagePrivate() which can have different meanings across
    filesystems. Therefore the generic page migration code cannot handle this
    case correctly.
    We have to implement our own migration function which basically does a
    plain copy but also duplicates the page private flag.
    UBIFS is not a block device filesystem and cannot use buffer_migrate_page().

    Cc: stable@vger.kernel.org
    Signed-off-by: Kirill A. Shutemov
    [rw: Massaged changelog, build fixes, etc...]
    Signed-off-by: Richard Weinberger
    Acked-by: Christoph Hellwig

    Kirill A. Shutemov
     

28 May, 2016

2 commits


24 May, 2016

1 commit


21 May, 2016

1 commit

  • Let's gather the UUID related functions under one hood.

    Signed-off-by: Andy Shevchenko
    Reviewed-by: Matt Fleming
    Cc: Dmitry Kasatkin
    Cc: Mimi Zohar
    Cc: Rasmus Villemoes
    Cc: Arnd Bergmann
    Cc: "Theodore Ts'o"
    Cc: Al Viro
    Cc: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     

19 May, 2016

1 commit

  • Pull remaining vfs xattr work from Al Viro:
    "The rest of work.xattr (non-cifs conversions)"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    btrfs: Switch to generic xattr handlers
    ubifs: Switch to generic xattr handlers
    jfs: Switch to generic xattr handlers
    jfs: Clean up xattr name mapping
    gfs2: Switch to generic xattr handlers
    ceph: kill __ceph_removexattr()
    ceph: Switch to generic xattr handlers
    ceph: Get rid of d_find_alias in ceph_set_acl

    Linus Torvalds
     

18 May, 2016

1 commit

  • Ubifs internally uses special inodes for storing xattrs. Those inodes
    had NULL {get,set,remove}xattr inode operations before this change, so
    xattr operations on them would fail. The super block's s_xattr field
    would also apply to those special inodes. However, the inodes are not
    visible outside of ubifs, and so no xattr operations will ever be
    carried out on them anyway.

    Signed-off-by: Andreas Gruenbacher
    Reviewed-by: Richard Weinberger
    Signed-off-by: Al Viro

    Andreas Gruenbacher
     

09 May, 2016

1 commit


03 May, 2016

1 commit


11 Apr, 2016

1 commit


05 Apr, 2016

2 commits

  • Mostly direct substitution with occasional adjustment or removing
    outdated comments.

    Signed-off-by: Kirill A. Shutemov
    Acked-by: Michal Hocko
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     
  • PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} macros were introduced *long* time
    ago with promise that one day it will be possible to implement page
    cache with bigger chunks than PAGE_SIZE.

    This promise never materialized. And unlikely will.

    We have many places where PAGE_CACHE_SIZE assumed to be equal to
    PAGE_SIZE. And it's constant source of confusion on whether
    PAGE_CACHE_* or PAGE_* constant should be used in a particular case,
    especially on the border between fs and mm.

    Global switching to PAGE_CACHE_SIZE != PAGE_SIZE would cause to much
    breakage to be doable.

    Let's stop pretending that pages in page cache are special. They are
    not.

    The changes are pretty straight-forward:

    - << (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> ;

    - >> (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> ;

    - PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} -> PAGE_{SIZE,SHIFT,MASK,ALIGN};

    - page_cache_get() -> get_page();

    - page_cache_release() -> put_page();

    This patch contains automated changes generated with coccinelle using
    script below. For some reason, coccinelle doesn't patch header files.
    I've called spatch for them manually.

    The only adjustment after coccinelle is revert of changes to
    PAGE_CAHCE_ALIGN definition: we are going to drop it later.

    There are few places in the code where coccinelle didn't reach. I'll
    fix them manually in a separate patch. Comments and documentation also
    will be addressed with the separate patch.

    virtual patch

    @@
    expression E;
    @@
    - E << (PAGE_CACHE_SHIFT - PAGE_SHIFT)
    + E

    @@
    expression E;
    @@
    - E >> (PAGE_CACHE_SHIFT - PAGE_SHIFT)
    + E

    @@
    @@
    - PAGE_CACHE_SHIFT
    + PAGE_SHIFT

    @@
    @@
    - PAGE_CACHE_SIZE
    + PAGE_SIZE

    @@
    @@
    - PAGE_CACHE_MASK
    + PAGE_MASK

    @@
    expression E;
    @@
    - PAGE_CACHE_ALIGN(E)
    + PAGE_ALIGN(E)

    @@
    expression E;
    @@
    - page_cache_get(E)
    + get_page(E)

    @@
    expression E;
    @@
    - page_cache_release(E)
    + put_page(E)

    Signed-off-by: Kirill A. Shutemov
    Acked-by: Michal Hocko
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     

21 Mar, 2016

2 commits

  • UBIFS does not support POSIX ACLs, so there is no need for including any
    POSIX ACL hesders.

    Signed-off-by: Andreas Gruenbacher
    Signed-off-by: Richard Weinberger

    Andreas Gruenbacher
     
  • The existing logging macros are fairly large and converting the
    macros to functions make the object code smaller.

    Use %pV and __builtin_return_address(0) as appropriate.

    $ size fs/ubifs/built-in.o*
    text data bss dec hex filename
    575831 309688 161312 1046831 ff92f fs/ubifs/built-in.o.allyesconfig.new
    622457 312872 161120 1096449 10bb01 fs/ubifs/built-in.o.allyesconfig.old
    223785 640 644 225069 36f2d fs/ubifs/built-in.o.defconfig.new
    251873 640 644 253157 3dce5 fs/ubifs/built-in.o.defconfig.old

    Signed-off-by: Joe Perches
    Signed-off-by: Richard Weinberger

    Joe Perches
     

23 Jan, 2016

1 commit

  • parallel to mutex_{lock,unlock,trylock,is_locked,lock_nested},
    inode_foo(inode) being mutex_foo(&inode->i_mutex).

    Please, use those for access to ->i_mutex; over the coming cycle
    ->i_mutex will become rwsem, with ->lookup() done with it held
    only shared.

    Signed-off-by: Al Viro

    Al Viro
     

15 Jan, 2016

1 commit

  • Mark those kmem allocations that are known to be easily triggered from
    userspace as __GFP_ACCOUNT/SLAB_ACCOUNT, which makes them accounted to
    memcg. For the list, see below:

    - threadinfo
    - task_struct
    - task_delay_info
    - pid
    - cred
    - mm_struct
    - vm_area_struct and vm_region (nommu)
    - anon_vma and anon_vma_chain
    - signal_struct
    - sighand_struct
    - fs_struct
    - files_struct
    - fdtable and fdtable->full_fds_bits
    - dentry and external_name
    - inode for all filesystems. This is the most tedious part, because
    most filesystems overwrite the alloc_inode method.

    The list is far from complete, so feel free to add more objects.
    Nevertheless, it should be close to "account everything" approach and
    keep most workloads within bounds. Malevolent users will be able to
    breach the limit, but this was possible even with the former "account
    everything" approach (simply because it did not account everything in
    fact).

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Vladimir Davydov
    Acked-by: Johannes Weiner
    Acked-by: Michal Hocko
    Cc: Tejun Heo
    Cc: Greg Thelen
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vladimir Davydov
     

13 Jan, 2016

1 commit


10 Jan, 2016

2 commits


09 Dec, 2015

1 commit

  • new method: ->get_link(); replacement of ->follow_link(). The differences
    are:
    * inode and dentry are passed separately
    * might be called both in RCU and non-RCU mode;
    the former is indicated by passing it a NULL dentry.
    * when called that way it isn't allowed to block
    and should return ERR_PTR(-ECHILD) if it needs to be called
    in non-RCU mode.

    It's a flagday change - the old method is gone, all in-tree instances
    converted. Conversion isn't hard; said that, so far very few instances
    do not immediately bail out when called in RCU mode. That'll change
    in the next commits.

    Signed-off-by: Al Viro

    Al Viro
     

14 Nov, 2015

2 commits

  • Pull vfs xattr cleanups from Al Viro.

    * 'for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    f2fs: xattr simplifications
    squashfs: xattr simplifications
    9p: xattr simplifications
    xattr handlers: Pass handler to operations instead of flags
    jffs2: Add missing capability check for listing trusted xattrs
    hfsplus: Remove unused xattr handler list operations
    ubifs: Remove unused security xattr handler
    vfs: Fix the posix_acl_xattr_list return value
    vfs: Check attribute names in posix acl xattr handers

    Linus Torvalds
     
  • Ubifs installs a security xattr handler in sb->s_xattr but doesn't use the
    generic_{get,set,list,remove}xattr inode operations needed for processing
    this list of attribute handlers; the handler is never called. Instead,
    ubifs uses its own xattr handlers which also process security xattrs.

    Remove the dead code.

    Signed-off-by: Andreas Gruenbacher
    Reviewed-by: Richard Weinberger
    Cc: Artem Bityutskiy
    Cc: Adrian Hunter
    Cc: linux-mtd@lists.infradead.org
    Cc: Subodh Nijsure
    Signed-off-by: Al Viro

    Andreas Gruenbacher
     

11 Nov, 2015

1 commit

  • Pull UBI/UBIFS updates from Richard Weinberger:

    - access time support for UBIFS by Dongsheng Yang

    - random cleanups and bug fixes all over the place

    * tag 'upstream-4.4-rc1' of git://git.infradead.org/linux-ubifs:
    ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs
    ubifs: make ubifs_[get|set]xattr atomic
    UBIFS: Delete unnecessary checks before the function call "iput"
    UBI: Remove in vain semicolon
    UBI: Fastmap: Fix PEB array type
    UBIFS: Fix possible memory leak in ubifs_readdir()
    fs/ubifs: remove unnecessary new_valid_dev check
    ubi: fastmap: Implement produce_free_peb()
    UBIFS: print verbose message when rescanning a corrupted node
    UBIFS: call dbg_is_power_cut() instead of reading c->dbg->pc_happened
    UBI: drop null test before destroy functions
    UBI: Update comments to reflect UBI_METAONLY flag
    UBI: Fix debug message
    UBI: Fix typo in comment
    UBI: Fastmap: Simplify expression
    UBIFS: fix a typo in comment of ubifs_budget_req
    UBIFS: use kmemdup rather than duplicating its implementation

    Linus Torvalds
     

07 Nov, 2015

5 commits

  • To make ubifs support atime flexily, this commit introduces
    a Kconfig option named as UBIFS_ATIME_SUPPORT.

    With UBIFS_ATIME_SUPPORT=n:
    ubifs keeps the full compatibility to no_atime from
    the start of ubifs.

    =================UBIFS_ATIME_SUPPORT=n=======================
    -o - no atime
    -o atime - no atime
    -o noatime - no atime
    -o relatime - no atime
    -o strictatime - no atime
    -o lazyatime - no atime

    With UBIFS_ATIME_SUPPORT=y:
    ubifs supports the atime same with other main stream
    file systems.
    =================UBIFS_ATIME_SUPPORT=y=======================
    -o - default behavior (relatime currently)
    -o atime - atime support
    -o noatime - no atime support
    -o relatime - relative atime support
    -o strictatime - strict atime support
    -o lazyatime - lazy atime support

    Signed-off-by: Dongsheng Yang
    Reviewed-by: Richard Weinberger
    Signed-off-by: Richard Weinberger

    Dongsheng Yang
     
  • This commit make the ubifs_[get|set]xattr protected by ui_mutex.

    Originally, there is a possibility that ubifs_getxattr to get
    a wrong value.

    P1 P2
    ---------- ----------
    ubifs_getxattr ubifs_setxattr
    - kfree()
    - memcpy()
    - kmemdup()

    Then ubifs_getxattr() would get a non-sense data. To solve this
    problem, this commit make the xattr of ubifs_inode updated in
    atomic.

    Signed-off-by: Dongsheng Yang
    Signed-off-by: Richard Weinberger

    Dongsheng Yang
     
  • The iput() function tests whether its argument is NULL and then
    returns immediately. Thus the test around the call is not needed.

    This issue was detected by using the Coccinelle software.

    Signed-off-by: Markus Elfring
    Signed-off-by: Richard Weinberger

    Markus Elfring
     
  • If ubifs_tnc_next_ent() returns something else than -ENOENT
    we leak file->private_data.

    Signed-off-by: Richard Weinberger
    Reviewed-by: David Gstir

    Richard Weinberger
     
  • As currently new_valid_dev always returns 1, so new_valid_dev check is not
    needed, remove it.

    Signed-off-by: Yaowei Bai
    Reviewed-by: Richard Weinberger
    Signed-off-by: Artem Bityutskiy
    Signed-off-by: Richard Weinberger

    Yaowei Bai
     

04 Oct, 2015

4 commits


29 Sep, 2015

1 commit

  • Fixes the following lockdep splat:
    [ 1.244527] =============================================
    [ 1.245193] [ INFO: possible recursive locking detected ]
    [ 1.245193] 4.2.0-rc1+ #37 Not tainted
    [ 1.245193] ---------------------------------------------
    [ 1.245193] cp/742 is trying to acquire lock:
    [ 1.245193] (&sb->s_type->i_mutex_key#9){+.+.+.}, at: [] ubifs_init_security+0x29/0xb0
    [ 1.245193]
    [ 1.245193] but task is already holding lock:
    [ 1.245193] (&sb->s_type->i_mutex_key#9){+.+.+.}, at: [] path_openat+0x3af/0x1280
    [ 1.245193]
    [ 1.245193] other info that might help us debug this:
    [ 1.245193] Possible unsafe locking scenario:
    [ 1.245193]
    [ 1.245193] CPU0
    [ 1.245193] ----
    [ 1.245193] lock(&sb->s_type->i_mutex_key#9);
    [ 1.245193] lock(&sb->s_type->i_mutex_key#9);
    [ 1.245193]
    [ 1.245193] *** DEADLOCK ***
    [ 1.245193]
    [ 1.245193] May be due to missing lock nesting notation
    [ 1.245193]
    [ 1.245193] 2 locks held by cp/742:
    [ 1.245193] #0: (sb_writers#5){.+.+.+}, at: [] mnt_want_write+0x1f/0x50
    [ 1.245193] #1: (&sb->s_type->i_mutex_key#9){+.+.+.}, at: [] path_openat+0x3af/0x1280
    [ 1.245193]
    [ 1.245193] stack backtrace:
    [ 1.245193] CPU: 2 PID: 742 Comm: cp Not tainted 4.2.0-rc1+ #37
    [ 1.245193] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140816_022509-build35 04/01/2014
    [ 1.245193] ffffffff8252d530 ffff88007b023a38 ffffffff814f6f49 ffffffff810b56c5
    [ 1.245193] ffff88007c30cc80 ffff88007b023af8 ffffffff810a150d ffff88007b023a68
    [ 1.245193] 000000008101302a ffff880000000000 00000008f447e23f ffffffff8252d500
    [ 1.245193] Call Trace:
    [ 1.245193] [] dump_stack+0x4c/0x65
    [ 1.245193] [] ? console_unlock+0x1c5/0x510
    [ 1.245193] [] __lock_acquire+0x1a6d/0x1ea0
    [ 1.245193] [] ? __lock_is_held+0x58/0x80
    [ 1.245193] [] lock_acquire+0xd3/0x270
    [ 1.245193] [] ? ubifs_init_security+0x29/0xb0
    [ 1.245193] [] mutex_lock_nested+0x6b/0x3a0
    [ 1.245193] [] ? ubifs_init_security+0x29/0xb0
    [ 1.245193] [] ? ubifs_init_security+0x29/0xb0
    [ 1.245193] [] ubifs_init_security+0x29/0xb0
    [ 1.245193] [] ubifs_create+0xa6/0x1f0
    [ 1.245193] [] ? path_openat+0x3af/0x1280
    [ 1.245193] [] vfs_create+0x95/0xc0
    [ 1.245193] [] path_openat+0x7cc/0x1280
    [ 1.245193] [] ? __lock_acquire+0x543/0x1ea0
    [ 1.245193] [] ? sched_clock_cpu+0x90/0xc0
    [ 1.245193] [] ? calc_global_load_tick+0x60/0x90
    [ 1.245193] [] ? sched_clock_cpu+0x90/0xc0
    [ 1.245193] [] ? __alloc_fd+0xaf/0x180
    [ 1.245193] [] do_filp_open+0x75/0xd0
    [ 1.245193] [] ? _raw_spin_unlock+0x26/0x40
    [ 1.245193] [] ? __alloc_fd+0xaf/0x180
    [ 1.245193] [] do_sys_open+0x129/0x200
    [ 1.245193] [] SyS_open+0x19/0x20
    [ 1.245193] [] entry_SYSCALL_64_fastpath+0x12/0x6f

    While the lockdep splat is a false positive, becuase path_openat holds i_mutex
    of the parent directory and ubifs_init_security() tries to acquire i_mutex
    of a new inode, it reveals that taking i_mutex in ubifs_init_security() is
    in vain because it is only being called in the inode allocation path
    and therefore nobody else can see the inode yet.

    Cc: stable@vger.kernel.org # 3.20-
    Reported-and-tested-by: Boris Brezillon
    Reviewed-and-tested-by: Dongsheng Yang
    Signed-off-by: Richard Weinberger
    Signed-off-by: dedekind1@gmail.com

    Richard Weinberger
     

26 Jun, 2015

1 commit

  • Pull UBI/UBIFS updates from Richard Weinberger:
    "Minor fixes for UBI and UBIFS"

    * tag 'upstream-4.2-rc1' of git://git.infradead.org/linux-ubifs:
    UBI: Remove unnecessary `\'
    UBI: Use static class and attribute groups
    UBI: add a helper function for updatting on-flash layout volumes
    UBI: Fastmap: Do not add vol if it already exists
    UBI: Init vol->reserved_pebs by assignment
    UBI: Fastmap: Rename variables to make them meaningful
    UBI: Fastmap: Remove unnecessary `\'
    UBI: Fastmap: Use max() to get the larger value
    ubifs: fix to check error code of register_shrinker
    UBI: block: Dynamically allocate minor numbers

    Linus Torvalds
     

02 Jun, 2015

1 commit

  • register_shrinker() in ubifs_init() can fail due to fail to call kzalloc.
    This patch fixes to check the return value of register_shrinker, otherwise
    our shrinker may be unregistered after ubifs initialized successfully.

    Signed-off-by: Chao Yu
    Signed-off-by: Artem Bityutskiy
    Signed-off-by: Richard Weinberger

    Chao Yu
     

11 May, 2015

1 commit


27 Apr, 2015

1 commit

  • Pull fourth vfs update from Al Viro:
    "d_inode() annotations from David Howells (sat in for-next since before
    the beginning of merge window) + four assorted fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    RCU pathwalk breakage when running into a symlink overmounting something
    fix I_DIO_WAKEUP definition
    direct-io: only inc/dec inode->i_dio_count for file systems
    fs/9p: fix readdir()
    VFS: assorted d_backing_inode() annotations
    VFS: fs/inode.c helpers: d_inode() annotations
    VFS: fs/cachefiles: d_backing_inode() annotations
    VFS: fs library helpers: d_inode() annotations
    VFS: assorted weird filesystems: d_inode() annotations
    VFS: normal filesystems (and lustre): d_inode() annotations
    VFS: security/: d_inode() annotations
    VFS: security/: d_backing_inode() annotations
    VFS: net/: d_inode() annotations
    VFS: net/unix: d_backing_inode() annotations
    VFS: kernel/: d_inode() annotations
    VFS: audit: d_backing_inode() annotations
    VFS: Fix up some ->d_inode accesses in the chelsio driver
    VFS: Cachefiles should perform fs modifications on the top layer only
    VFS: AF_UNIX sockets should call mknod on the top layer only

    Linus Torvalds
     

16 Apr, 2015

2 commits

  • Pull UBI/UBIFS updates from Richard Weinberger:
    "This pull request includes the following UBI/UBIFS changes:

    - powercut emulation for UBI
    - a huge update to UBI Fastmap
    - cleanups and bugfixes all over UBI and UBIFS"

    * tag 'upstream-4.1-rc1' of git://git.infradead.org/linux-ubifs: (50 commits)
    UBI: power cut emulation for testing
    UBIFS: fix output format of INUM_WATERMARK
    UBI: Fastmap: Fall back to scanning mode after ECC error
    UBI: Fastmap: Remove is_fm_block()
    UBI: Fastmap: Add blank line after declarations
    UBI: Fastmap: Remove else after return.
    UBI: Fastmap: Introduce may_reserve_for_fm()
    UBI: Fastmap: Introduce ubi_fastmap_init()
    UBI: Fastmap: Wire up WL accessor functions
    UBI: Add accessor functions for WL data structures
    UBI: Move fastmap specific functions out of wl.c
    UBI: Fastmap: Add new module parameter fm_debug
    UBI: Fastmap: Make self_check_eba() depend on fastmap self checking
    UBI: Fastmap: Add self check to detect absent PEBs
    UBI: Fix stale pointers in ubi->lookuptbl
    UBI: Fastmap: Enhance fastmap checking
    UBI: Add initial support for fastmap self checks
    UBI: Fastmap: Rework fastmap error paths
    UBI: Fastmap: Prepare for variable sized fastmaps
    UBI: Fastmap: Locking updates
    ...

    Linus Torvalds
     
  • that's the bulk of filesystem drivers dealing with inodes of their own

    Signed-off-by: David Howells
    Signed-off-by: Al Viro

    David Howells
     

13 Apr, 2015

1 commit

  • The INUM_WATERMARK is a unsigned 32bit value, `%d' prints it as negatave:
    [ 103.682255] UBIFS warning (ubi0:0 pid 691): ubifs_new_inode: running out of inode numbers (current 122763, max -256)

    Fix it as:
    [ 154.422940] UBIFS warning (ubi0:0 pid 688): ubifs_new_inode: running out of inode numbers (current 122765, max 4294967040)

    Signed-off-by: Sheng Yong
    Signed-off-by: Artem Bityutskiy

    Sheng Yong