06 Feb, 2016

1 commit


01 Jan, 2016

2 commits


21 Aug, 2015

1 commit

  • We want to move commiting pages to pages list instead.
    Otherwise it causes pnfs small writes crash like:

    [34560.037692] BUG: unable to handle kernel NULL pointer dereference at 0000000000000068
    [34560.038557] IP: [] nfs_init_commit+0x26/0x130 [nfs]
    [34560.039400] PGD 69f5a067 PUD 69f59067 PMD 0
    [34560.040207] Oops: 0000 [#1] SMP
    [34560.041014] Modules linked in: nfsv3(OE) nfs_layout_flexfiles(OE) nfsv4(OE) nfs(OE) fscache(E) rpcsec_gss_krb5(E) xt_addrtype(E) xt_conntrack(E) ipt_MASQUERADE(E) nf_nat_masquerade_ipv4(E) iptable_nat(E) nf_conntrack_ipv4(E) nf_defrag_ipv4(E) nf_nat_ipv4(E) iptable_filter(E) ip_tables(E) x_tables(E) nf_nat(E) nf_conntrack(E) bridge(E) stp(E) llc(E) dm_thin_pool(E) dm_persistent_data(E) dm_bio_prison(E) dm_bufio(E) ppdev(E) vmw_balloon(E) coretemp(E) crc32_pclmul(E) ghash_clmulni_intel(E) aesni_intel(E) aes_x86_64(E) glue_helper(E) lrw(E) gf128mul(E) ablk_helper(E) cryptd(E) psmouse(E) serio_raw(E) vmw_vmci(E) i2c_piix4(E) shpchp(E) parport_pc(E) parport(E) mac_hid(E) nfsd(E) auth_rpcgss(E) nfs_acl(E) lockd(E) grace(E) sunrpc(E) xfs(E) libcrc32c(E) hid_generic(E) usbhid(E) hid(E) e1000(E) mptspi(E)
    [34560.045106] mptscsih(E) mptbase(E) vmwgfx(E) drm_kms_helper(E) ttm(E) drm(E) autofs4(E) [last unloaded: fscache]
    [34560.045897] CPU: 0 PID: 130543 Comm: bash Tainted: G OE 4.2.0-rc5-dp-00057-gf993a93 #11
    [34560.046699] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 05/20/2014
    [34560.047525] task: ffff880031b0a980 ti: ffff880045fec000 task.ti: ffff880045fec000
    [34560.048264] RIP: 0010:[] [] nfs_init_commit+0x26/0x130 [nfs]
    [34560.049000] RSP: 0018:ffff880045fefc18 EFLAGS: 00010246
    [34560.049717] RAX: 0000000000000000 RBX: ffff8800208fbc80 RCX: ffff880045fefd50
    [34560.050396] RDX: ffff880031c19ec0 RSI: ffff880045fefc88 RDI: ffff8800208fbc80
    [34560.051041] RBP: ffff880045fefc28 R08: ffff8800208fbe68 R09: ffff880045fefc88
    [34560.051666] R10: 0000000000000000 R11: 0000000000000000 R12: ffff880045fefc78
    [34560.052247] R13: ffff880045fefc88 R14: ffff880045fefa90 R15: ffff880045fefd50
    [34560.052825] FS: 00007fa02d58c740(0000) GS:ffff88006d600000(0000) knlGS:0000000000000000
    [34560.053410] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [34560.053992] CR2: 0000000000000068 CR3: 000000003b37a000 CR4: 00000000001406f0
    [34560.054615] Stack:
    [34560.055200] ffff8800208fbc80 ffff8800208fbc80 ffff880045fefcc8 ffffffffa05c1a5b
    [34560.055800] ffff880045fefcc8 ffff880045fefd50 0000000045fefcb8 ffff880045fefd40
    [34560.056418] ffff8800420608e0 ffffffffa04f3910 0000000100000001 ffff880045fefd50
    [34560.057013] Call Trace:
    [34560.057672] [] pnfs_generic_commit_pagelist+0x1cb/0x300 [nfsv4]
    [34560.058277] [] ? ff_layout_commit_pagelist+0x20/0x20 [nfs_layout_flexfiles]
    [34560.058907] [] ff_layout_commit_pagelist+0x15/0x20 [nfs_layout_flexfiles]
    [34560.059557] [] nfs_generic_commit_list+0xb1/0xf0 [nfs]
    [34560.060214] [] ? nfs_scan_commit+0x37/0xa0 [nfs]
    [34560.060825] [] nfs_commit_inode+0x81/0x150 [nfs]
    [34560.061432] [] nfs_wb_all+0x1ae/0x400 [nfs]
    [34560.062035] [] nfs_getattr+0x33d/0x510 [nfs]
    [34560.062630] [] vfs_getattr_nosec+0x2c/0x40
    [34560.063223] [] vfs_getattr+0x26/0x30
    [34560.063818] [] vfs_fstatat+0x65/0xa0
    [34560.064413] [] SYSC_newstat+0x1f/0x40
    [34560.065016] [] ? do_audit_syscall_entry+0x66/0x70
    [34560.065626] [] ? syscall_trace_enter_phase1+0x113/0x170
    [34560.066245] [] ? trace_hardirqs_on_thunk+0x17/0x19
    [34560.066868] [] SyS_newstat+0xe/0x10
    [34560.067533] [] entry_SYSCALL_64_fastpath+0x16/0x7a
    [34560.068173] Code: 0f 1f 44 00 00 0f 1f 44 00 00 55 4c 8d 87 e8 01 00 00 48 89 e5 53 48 89 fb 48 83 ec 08 4c 8b 0e 49 8b 41 18 4c 39 ce 48 8b 40 40 8b 50 68 74 24 48 8b 87 e8 01 00 00 48 8b 7e 08 4d 89 41 08
    [34560.069609] RIP [] nfs_init_commit+0x26/0x130 [nfs]
    [34560.070295] RSP
    [34560.071008] CR2: 0000000000000068
    [34560.073207] ---[ end trace f85f873260977406 ]---

    [fixes 27571297a7e(pNFS: Tighten up locking around DS commit buckets)]
    Signed-off-by: Peng Tao
    Signed-off-by: Trond Myklebust

    Peng Tao
     

18 Aug, 2015

2 commits

  • * layoutfixes:
    NFSv4.1/pnfs: Remove redundant wakeup in pnfs_send_layoutreturn()
    NFSv4.1/pnfs: Remove redundant check in pnfs_layoutgets_blocked()
    NFSv4.1/pnfs: Remove redundant lo->plh_block_lgets in layoutreturn
    NFSv4.1/pnfs: Don't prevent layoutgets when doing return-on-close
    NFSv4.1/pnfs: Fix serialisation of layout return and layoutget
    NFSv4.1/pnfs: Remove redundant checks in pnfs_layoutgets_blocked()
    pNFS: Tighten up locking around DS commit buckets

    Trond Myklebust
     
  • - Switch back to using list_for_each_entry(). Fixes an incorrect test
    for list NULL termination.
    - Do not assume that lists are sorted.
    - Finally, consider an existing entry to match if it consists of a subset
    of the addresses in the new entry.

    Cc: stable@vger.kernel.org # 4.0+
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

13 Aug, 2015

1 commit

  • I'm not aware of any bugreports around this issue, but the locking
    around the pnfs_commit_bucket is inconsistent at best. This patch
    tightens it up by ensuring that the 'bucket->committing' list is always
    changed atomically w.r.t. the 'bucket->clseg' layout segment tracking.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

11 Aug, 2015

1 commit

  • pnfs_layout_mark_request_commit() needs to ensure that it adds the
    request to the commit list atomically with all the other updates
    in order to prevent corruption to buckets[ds_commit_idx].wlseg
    due to races with pnfs_generic_clear_request_commit().

    Fixes: 338d00cfef07d ("pnfs: Refactor the *_layout_mark_request_commit...")
    Cc: stable@vger.kernel.org # v4.0+
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

24 Apr, 2015

1 commit

  • * bugfixes:
    NFSv4: Return delegations synchronously in evict_inode
    SUNRPC: Fix a regression when reconnecting
    NFS: remount with security change should return EINVAL
    nfs: do not export discarded symbols
    NFSv4.1: don't export static symbol

    Trond Myklebust
     

28 Mar, 2015

1 commit

  • The LAYOUTCOMMIT operation means different things to different layout types.
    For blocks and objects, it is both a data and metadata consistency operation.
    For files and flexfiles, it is only a metadata consistency operation.

    This patch separates out the 2 cases, allowing the files/flexfiles layout
    drivers to optimise away the data consistency calls to layoutcommit.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

12 Mar, 2015

1 commit

  • The function nfs4_pnfs_v3_ds_connect_unload is exported so it can be
    used by other modules, but is also marked '__exit' and will be
    discarded when built into the kernel, as pointed out by this
    linker error:

    `nfs4_pnfs_v3_ds_connect_unload' referenced in section `___ksymtab_gpl+nfs4_pnfs_v3_ds_connect_unload' of fs/built-in.o: defined in discarded section `.exit.text' of fs/built-in.o

    This removes the __exit annotation to make it safe to call this function.

    Signed-off-by: Arnd Bergmann
    Fixes: 5f01d9539496 ("nfs41: create NFSv3 DS connection if specified")
    Signed-off-by: Trond Myklebust

    Arnd Bergmann
     

18 Feb, 2015

1 commit


04 Feb, 2015

11 commits