Whamcloud - gitweb
fs/lustre-release.git
3 years agoLU-13131 osc: Ensure immediate departure of sync write pages 53/38453/4
Oleg Drokin [Fri, 1 May 2020 21:50:39 +0000 (17:50 -0400)]
LU-13131 osc: Ensure immediate departure of sync write pages

Except for the case of direct-io and server-lock, we are
hold potentially multiple locks that are next to impossible
to find and cross reference.
So instead just send it all right away - should only
be a factor in rare cases of out of quota or close to out
of space.

Change-Id: I961cd9ba7f3266d22dfc5eff758c2f4ebbe148a4
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/38453
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Bobi Jam <bobijam@hotmail.com>
3 years agoLU-6142 utils: Fix style issues for lustre_rsync.c 41/38441/4
Arshad Hussain [Thu, 30 Apr 2020 23:32:51 +0000 (05:02 +0530)]
LU-6142 utils: Fix style issues for lustre_rsync.c

This patch fixes issues reported by checkpatch
for file lustre/utils/lustre_rsync.c

Test-Parameters: trivial
Signed-off-by: Arshad Hussain <arshad.super@gmail.com>
Change-Id: I4f4b3bd2455f2012561eb7567ba508e47c06749e
Reviewed-on: https://review.whamcloud.com/38441
Reviewed-by: Ben Evans <beevans@whamcloud.com>
Reviewed-by: Petros Koutoupis <petros.koutoupis@hpe.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-6142 kernel: use kmem_cache_zalloc as appropriate. 39/38439/3
Mr NeilBrown [Fri, 1 May 2020 05:11:59 +0000 (15:11 +1000)]
LU-6142 kernel: use kmem_cache_zalloc as appropriate.

Rather than passing __GFP_ZERO to kmem_cache_alloc(), or calling
memset(0) after the allocation, use kmem_cache_zalloc().

Also update spelling.txt to encourage use of kmem_cache_zalloc().

kmem_cache_zalloc() has been part of Linux since 2.6.17.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: Ic4ccbe0e223121e54699f7667e35db14d0f0da70
Reviewed-on: https://review.whamcloud.com/38439
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Chris Horn <chris.horn@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12222 ptlrpc: Check if NID is local, not just lolnd NID 88/38388/3
Chris Horn [Mon, 27 Apr 2020 15:07:21 +0000 (10:07 -0500)]
LU-12222 ptlrpc: Check if NID is local, not just lolnd NID

There's a couple places where we check whether a NID is the lolnd NID
but we really want to know whether the NID is local. Use
LNetIsPeerLocal() to accomplish this.

Signed-off-by: Chris Horn <hornc@cray.com>
Change-Id: Ia17b9b4b54fd1063c42a6f8bdd0e593be1086683
Reviewed-on: https://review.whamcloud.com/38388
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
3 years agoLU-6142 utils: Fix style issues for portals.c 62/38362/4
Arshad Hussain [Tue, 21 Apr 2020 18:07:15 +0000 (23:37 +0530)]
LU-6142 utils: Fix style issues for portals.c

This patch fixes issues reported by checkpatch
for file lustre/utils/portals.c

Test-Parameters: trivial
Signed-off-by: Arshad Hussain <arshad.super@gmail.com>
Change-Id: I97eb576fe12a75e26d36dcf2228d5f161712e3e5
Reviewed-on: https://review.whamcloud.com/38362
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Ben Evans <beevans@whamcloud.com>
Reviewed-by: Petros Koutoupis <petros.koutoupis@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13131 osc: Do not wait for grants for too long 83/38283/6
Oleg Drokin [Mon, 20 Apr 2020 13:51:29 +0000 (09:51 -0400)]
LU-13131 osc: Do not wait for grants for too long

obd_timeout is way too long considering we are holding a lock
that might be contended. If OST is slow to respond, we might
get evicted, so limit us to a half of the shortest possible
max wait a server might have before switching to synchronous IO.

Change-Id: I36653194c1b8b95ba3cc2ed9240df7b0888cf7ed
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/38283
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Bobi Jam <bobijam@hotmail.com>
3 years agoLU-9679 target: use OBD_ALLOC_PTR_ARRAY() and FREE 55/38255/2
Mr NeilBrown [Thu, 14 Nov 2019 03:20:01 +0000 (14:20 +1100)]
LU-9679 target: use OBD_ALLOC_PTR_ARRAY() and FREE

Use:
  OBD_ALLOC_PTR_ARRAY
  OBD_FREE_PTR_ARRAY

for allocating and freeing arrays in target.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I844a12e810c8a0bd6fb13ca047000de7f265988d
Reviewed-on: https://review.whamcloud.com/38255
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
3 years agoLU-9679 lodlov: use OBD_ALLOC_PTR_ARRAY() and others 54/38254/2
Mr NeilBrown [Thu, 14 Nov 2019 03:20:01 +0000 (14:20 +1100)]
LU-9679 lodlov: use OBD_ALLOC_PTR_ARRAY() and others

Use:
  OBD_ALLOC_PTR_ARRAY
  OBD_FREE_PTR_ARRAY
  OBD_ALLOC_PTR_ARRAY_LARGE
  OBD_FREE_PTR_ARRAY_LARGE

for allocating and freeing arrays in lod and lov.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: Ia782fc903761e21be982e4553ec40035c57f73f3
Reviewed-on: https://review.whamcloud.com/38254
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
3 years agoLU-13357 lod: implement striped directory .dio_lookup 03/37903/6
Lai Siyao [Thu, 12 Mar 2020 00:35:20 +0000 (08:35 +0800)]
LU-13357 lod: implement striped directory .dio_lookup

Add function lod_striped_lookup() for
lod_striped_index_ops.dio_lookup to allow name lookup under striped
directory.

Currently this is used by subdir mount, which needs to lookup FID
of the subdir on server side.

Function lfsck_namespace_repair_dirent() should call dt_lookup() with
bottom object, because child may be shard.

Add sanity 247f.

Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: Iba844d1a34a318bcbd42b00186ed6fa9d165effc
Reviewed-on: https://review.whamcloud.com/37903
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12003 osd: take reference to object in osd_trunc_lock() 70/37170/8
Alex Zhuravlev [Thu, 9 Jan 2020 13:28:54 +0000 (16:28 +0300)]
LU-12003 osd: take reference to object in osd_trunc_lock()

normally the references to objects are held until a transaction
is over, but in few cases reference is released before. and then
such an object can be release, so OSD should have own reference
to prevent early release.

Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Change-Id: I81647fdec8d42f123e990553edb5e371636f45c0
Reviewed-on: https://review.whamcloud.com/37170
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Mike Pershin <mpershin@whamcloud.com>
Reviewed-by: Lai Siyao <lai.siyao@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-11025 dne: support directory restripe 98/36898/14
Lai Siyao [Sat, 10 Aug 2019 05:00:01 +0000 (13:00 +0800)]
LU-11025 dne: support directory restripe

This patch adds directory restripe support:
* 'lfs setdirstripe -m -1 -c <stripe_count>' on an existed directory
  will change this directory layout, if 'stripe_count' is larger than
  current count, new stripes are allocated after current stripes,
  otherwise merge stripes of this directory, NB, if stripe count is
  unchanged, but hash type changed, it's treated as merging, but
  rehashing actually.
* mdt_restripe() ia added to restripe directory.
* mdd_dir_declare_layout_split() is added to split directory, which
  handles both plain and striped directory split.
* lod_dir_declare_layout_split() will handle the internal of directory
  split.
* directory merge is simple compared to split, which just records
  target stripe count in LMV, and update it.

NB. this patch only restripe directory, but doesn't add the code to
migrate sub files, which will be implemented in the following patch.

Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: I526f7423b909eb83cf8723e65981d713b3e42499
Reviewed-on: https://review.whamcloud.com/36898
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
Reviewed-by: Yingjin Qian <qian@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-11025 osd: osd_attr_get() returns dirent count 97/38097/8
Lai Siyao [Fri, 20 Mar 2020 09:59:32 +0000 (17:59 +0800)]
LU-11025 osd: osd_attr_get() returns dirent count

For osd-ldiskfs, to get dirent count it needs to iterate directory
entries and sum it up, while for osd-zfs, zap_count() can get it
from ZAP directly.

Add a new field 'la_dirent_count' in struct lu_attr, and set it
to directory entry count in osd_attr_get() if object is directory, and
this value will be cached in osd_object for osd-ldiskfs, if directory
is newly created, it will be set to '0', and later index_insert/delete
will update its value, so the following osd_attr_get() can use the
cached value.

Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: If4225aecdba1c428d64d97c35b6c982c4932a265
Reviewed-on: https://review.whamcloud.com/38097
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-11025 obdclass: add lu_device_operations::ldo_fid_alloc() 82/37282/10
Lai Siyao [Mon, 6 Jan 2020 11:44:33 +0000 (19:44 +0800)]
LU-11025 obdclass: add lu_device_operations::ldo_fid_alloc()

Add an interface ldo_fid_alloc in lu_device_operations, which is to
allocate a FID by parent object and sub file name, this will be
used to migrate sub files for directory restripe.

The existing osd_fid_alloc() and osp_fid_alloc() will switch to this
interface from obd_ops::o_fid_alloc().

Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: Ide480fe492fd2d4d5de675bbc61aee7e2a9e3ce3
Reviewed-on: https://review.whamcloud.com/37282
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12931 ldlm: use proper units for timeouts 65/38365/6
Andreas Dilger [Sat, 25 Apr 2020 09:19:04 +0000 (03:19 -0600)]
LU-12931 ldlm: use proper units for timeouts

Use timeout_t for ns_ctime_age_limit since this is a relative time
and not an absolute time.

Use ktime_t for ns_dirty_age_limit internally, even though the user
interface is in seconds, since this is frequenty used together with
other ktime_t values in the kernel.

Fixes: e920be681451 ("LU-9019 ldlm: migrate the rest of the code to 64 bit time")
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: Idb5ece834e56a95cd781cb871b1b7c20bf3ebbe5
Reviewed-on: https://review.whamcloud.com/38365
Reviewed-by: James Simmons <jsimmons@infradead.org>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13411 llog: allow delete of zero size llog 31/38131/5
Alexander Boyko [Fri, 3 Apr 2020 12:34:54 +0000 (08:34 -0400)]
LU-13411 llog: allow delete of zero size llog

1) all plain logs belonging to catalog should have flag
LLOG_F_ZAP_WHEN_EMPTY base on llog_cat_new_log(). When
llog_cat_process_common processing plain log with zero file size,
this flag is not set during llog_cat_id2handle LLOG_EMPTY, so these
plain llogs are not canceled/destroyed. They appeared during cross
MDT updates. Fix adds flag LLOG_F_ZAP_WHEN_EMPTY for any plain llog
at catalog.

Signed-off-by: Alexander Boyko <c17825@cray.com>
Cray-bug-id: LUS-8634
Change-Id: Ieebee67bf9e7bebb9ecc51b858a9976a00583c7b
Reviewed-on: https://review.whamcloud.com/38131
Reviewed-by: Mike Pershin <mpershin@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Alexander Zarochentsev <alexander.zarochentsev@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13416 ldiskfs: don't corrupt data on journal replay 81/38281/5
Alexey Lyashkov [Mon, 20 Apr 2020 09:45:52 +0000 (12:45 +0300)]
LU-13416 ldiskfs: don't corrupt data on journal replay

Journalled write want a special attention on blocks release, revoke records must
added to avoid replace a new write blocks with stale data. Mark inode as
“journal write” generate a right revoke records. Large EA inode updates affected
with this bug also.

large ea fix is

commit ddfa17e4adc4bd19c32216aaa6250dc38b0579df
Author: Tahsin Erdogan <tahsin@google.com>
Date:   Wed Jun 21 21:36:51 2017 -0400
    ext4: call journal revoke when freeing ea_inode blocks

Change-Id: I605128c4ba70331a48715dc95546430909efb893
Signed-off-by: Alexey Lyashkov <c17817@cray.com>
Reviewed-on: https://review.whamcloud.com/38281
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-11643 tests: revert new images and tests for upgrade patch 19/38619/3
James Nunez [Fri, 15 May 2020 14:14:38 +0000 (14:14 +0000)]
LU-11643 tests: revert new images and tests for upgrade patch

Revert "LU-11643 tests: add new images and tests for upgrade tests".
This patch seem to cause conf-sanity test 32a to hang.
Let's revert the patch until this issue is understood.

This reverts commit 6b979daaffc36aeef145316b41d0e2fe8abcf20f.

Test-Parameters: trivial testlist=conf-sanity env=ONLY=32
Change-Id: Ic4a354420797a5968234925960278eaab86d22ca
Signed-off-by: James Nunez <jnunez@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/38619
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
3 years agoLU-13541 llite: fix possible divide zero in ll_use_fast_io() 45/38545/2
Wang Shilong [Thu, 7 May 2020 00:58:54 +0000 (08:58 +0800)]
LU-13541 llite: fix possible divide zero in ll_use_fast_io()

ll_use_fast_io() is used to check wheather we could use fast IO.
Since it is called in fast path, we don't hold ras_lock to protect
access, there might have the race @ras_stride_bytes is reset after
stride_io_mode() check.

Fixes: 9e4c5bdaaec5 ("LU-12644 llite: try fast io for stride io correctly")
Change-Id: If57ad074ecfa6560cc527f9f52e7adc2b0a456fd
Signed-off-by: Wang Shilong <wshilong@ddn.com>
Reviewed-on: https://review.whamcloud.com/38545
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: James Nunez <jnunez@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
3 years agoLU-13246 osd: unlock os_lock if it was locked 47/37547/6
Alex Zhuravlev [Wed, 12 Feb 2020 05:45:09 +0000 (08:45 +0300)]
LU-13246 osd: unlock os_lock if it was locked

do not use the global state (which can change concurrently) for that.

Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Change-Id: Idbdc3639bca50006dac00112205e1fee9c9a0e30
Reviewed-on: https://review.whamcloud.com/37547
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Mike Pershin <mpershin@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12662 tests: Add new pjdfstest into tests 41/35841/24
Wei Liu [Tue, 20 Aug 2019 18:59:36 +0000 (11:59 -0700)]
LU-12662 tests: Add new pjdfstest into tests

Create a new POSIX test suite based on pjdfstest.

Test-Parameters: trivial
Test-Parameters: fstype=ldiskfs testlist=pjdfstest
Test-Parameters: fstype=zfs testlist=pjdfstest
Change-Id: Iec37e2248ce5ccf89319aaffb3ead9b407ad1931
Signed-off-by: Wei Liu <sarah@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/35841
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Nunez <jnunez@whamcloud.com>
3 years agoLU-11643 tests: add new images and tests for upgrade tests 49/35049/17
Wei Liu [Mon, 3 Jun 2019 20:29:45 +0000 (13:29 -0700)]
LU-11643 tests: add new images and tests for upgrade tests

Add new images for conf-sanity.sh 32

disk2_10-ldiskfs.tar.bz2
disk2_12-ldiskfs.tar.bz2

Test-Parameters: trivial
Test-Parameters: fstype=ldiskfs envdefinitions=ONLY="32f 32g" testlist=conf-sanity

Change-Id: I235c1d255db34fe8e6900e88d80265a3cd3eff18
Signed-off-by: Wei Liu <sarah@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/35049
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Nunez <jnunez@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-3606 fallocate: Implement fallocate preallocate operation 75/9275/79
Swapnil Pimpale [Sat, 20 May 2017 18:13:37 +0000 (23:43 +0530)]
LU-3606 fallocate: Implement fallocate preallocate operation

This patch adds fallocate(2) preallocate operation support
for Lustre. fallocate(2) method of the inode_operations or
file_operations is implemented and transported to the OSTs
to interface with the underlying OSD's fallocate(2) code.

In a saperate patch, a new RPC, OST_FALLOCATE has been
added and reserved for space preallocation. The fallocate
functionality (prealloc) in CLIO has been multiplexed
with CIT_SETATTR. (https://review.whamcloud.com/37277)

Lustre fsx(File system exerciser) is updated in a saperate
patch to handle fallocate calls. (https://review.whamcloud.com/37277)

Only fallocate preallocate operation is supported by this
patch for now. Other operations like, FALLOC_FL_PUNCH
(deallocate), FALLOC_FL_ZERO_RANGE, FALLOC_FL_COLLAPSE_RANGE
and FALLOC_FL_INSPECT_RANGE is not supported by this patch
and will be addressed by a separate patch.

ZFS operation is not supported by this patch. ZFS fallocate(2)
will be addressed by patch (https://review.whamcloud.com/36506/)

New test case under sanity is added to verify fallocate
call.

Test-Parameters: fstype=ldiskfs testlist=sanity,sanityn,sanity-dom
Signed-off-by: Swapnil Pimpale <spimpale@ddn.com>
Signed-off-by: Li Xi <lixi@ddn.com>
Signed-off-by: Abrarahmed Momin <abrar.momin@gmail.com>
Signed-off-by: Arshad Hussain <arshad.super@gmail.com>
Change-Id: I03f27d356616fbf3a3ab8e6309af26c00434d81b
Reviewed-on: https://review.whamcloud.com/9275
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Wang Shilong <wshilong@ddn.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13432 tests: test-framework to preserver MODOPTS_LIBCFS 73/38173/3
Alex Zhuravlev [Wed, 8 Apr 2020 08:24:08 +0000 (11:24 +0300)]
LU-13432 tests: test-framework to preserver MODOPTS_LIBCFS

do not reset MODOPTS_LIBCFS at module loading so that
if some one passes extra option to a test that's preserved
over a whole run rather than reset that at the first module
reload.

Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Change-Id: I235d09dc7ed4084b95e7f85528b952b75b16744d
Reviewed-on: https://review.whamcloud.com/38173
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Nunez <jnunez@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
3 years agoLU-13174 tests: sanity-quota to convert minutes into seconds 27/37327/5
Alex Zhuravlev [Mon, 27 Jan 2020 08:03:20 +0000 (11:03 +0300)]
LU-13174 tests: sanity-quota to convert minutes into seconds

before arithmetic opertions

Change-Id: Iaefcd01dfe2066256010c2d195414a689c9f7573
Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/37327
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Wei Liu <sarah@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13486 llite: restore ll_dcompare() 98/38498/3
Andreas Dilger [Tue, 5 May 2020 17:20:06 +0000 (17:20 +0000)]
LU-13486 llite: restore ll_dcompare()

Revert "LU-9868 llite: Get rid of ll_dcompare" as it is causing
failures in conf-sanity test_32* due to errors with sub-mounted
ext2 filesystem dentries being invalidated.

This reverts commit 787231f53ab63c72634250f8fe9d27bc66cc4e46.

Change-Id: I5cff42df30cf91523c1dbb8ee5b8eefa1ba3a5ad
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/38498
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Neil Brown <neilb@suse.de>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12477 ldiskfs: finish removing HAVE_CLEAR_RDONLY_ON_PUT 38/38438/3
Mr NeilBrown [Fri, 1 May 2020 03:40:45 +0000 (13:40 +1000)]
LU-12477 ldiskfs: finish removing HAVE_CLEAR_RDONLY_ON_PUT

A recent patch removed almost all occurances of
HAVE_CLEAR_RDONLY_ON_PUT.  There is still one in
an ldiskfs patch, and it is the only reason for that
patch.

So remove the patch.

Test-Parameters: trivial
Fixes: 20553c985a51 ("LU-12477 kernel: remove dev_read_only handling")
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I5faf01aecd665b49bd3a74f9d968994c8db53c1c
Reviewed-on: https://review.whamcloud.com/38438
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13433 doc: fix lfs mirror "delete" and "split" doc 94/38394/2
Kévin Baillergeau [Tue, 28 Apr 2020 08:10:27 +0000 (08:10 +0000)]
LU-13433 doc: fix lfs mirror "delete" and "split" doc

Add --mirror-id and --component-id in "lfs mirror delete" usage
Add examples with --comp-id in lfs mirror delete and split manpages
Add --comp-id in lfs mirror delete and split manpages

Test-Parameters: trivial
Signed-off-by: Kévin Baillergeau <kevin.baillergeau.ocre@cea.fr>
Change-Id: Icdc010eec9141b2582f9d43418523643b11018e5
Reviewed-on: https://review.whamcloud.com/38394
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13461 lnet: restrict gateway selection 98/38298/5
Amir Shehata [Tue, 21 Apr 2020 01:36:42 +0000 (18:36 -0700)]
LU-13461 lnet: restrict gateway selection

This patch fixes a conflict between
LU-13026 lnet: MR selection of gateway ni
and
LU-12919 lnet: Fix source specified route selection

LU-12919 patch relied on lnet_find_best_lpni_on_net() to restrict
lpni selection on a specific network. However, it is necessary
to allow lpni selection on any network if the src net is not
specified. LU-13026 removed the restriction imposed by
lnet_find_best_lpni_on_net(), which broke the restriction
on the source net selection in some configuration setups.

This patch renames lnet_find_best_lpni_on_net() to
lnet_find_best_lpni(). If passed a peer_net it will find the
best lpni on the peer_net or return NULL if none is available.
If passed 'any' net, then it'll find the best reachable lpni
on any available net.

Fixes: e5614b45793 ("LU-13026 lnet: MR selection of gateway ni")
Fixes: f0aa632d425 ("LU-12919 lnet: Fix source specified route selection")
Signed-off-by: Amir Shehata <ashehata@whamcloud.com>
Change-Id: Ia2a655a6efcbdd1ac067bd622b030bb677b813cd
Reviewed-on: https://review.whamcloud.com/38298
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Chris Horn <chris.horn@hpe.com>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-11310 ldiskfs: Repair support for SUSE 15 GA and SP1 56/38256/7
Mr NeilBrown [Thu, 16 Apr 2020 05:49:07 +0000 (15:49 +1000)]
LU-11310 ldiskfs: Repair support for SUSE 15 GA and SP1

At about the same time that support for SLE15 was added, some of the
patches mentioned in the series were removed by a separate patch.

This patch restores correct compiltation for ldiskfs with SUSE 4.12
kernels.

Specifically
     SLE15-LTSS release 4.12.14-150.47
     and 4.12.14-150.22
and
     SLES15-SP1 release 4.12.14-197.37
     and 4.12.14-197.7
which are the current releases as of 2020-apr-21 that  are supported.

Test-Parameters: trivial
Fixes: fc87b01f96e8 ("LU-12477 ldiskfs: remove obsolete ext4 patches")
Fixes: 862e9bf632dc ("LU-11310 ldiskfs: Support for SUSE 15 GA and SP1")
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I76077feec52097345647048cefd2bb375c72e35e
Reviewed-on: https://review.whamcloud.com/38256
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13455 ptlrpc: connect to MDT stucks 43/38243/3
Andriy Skulysh [Fri, 17 Jan 2020 10:05:35 +0000 (12:05 +0200)]
LU-13455 ptlrpc: connect to MDT stucks

mdc_ioc_hsm_ct_register() is executed on
IMP_EVENT_ACTIVE event.
If HSM_CT_REGISTER request expires import becomes
disconnected but reconnect can't start because
previous connect waits for completion of
HSM_CT_REGISTER request.

Mark HSM_CT_REGISTER request as no_resend.

Change-Id: Ia131f30453dc49cc800b56f256f5fb4bbb4147d6
Cray-bug-id: LUS-8409
Signed-off-by: Andriy Skulysh <c17819@cray.com>
Reviewed-by: Alexander Boyko <c17825@cray.com>
Reviewed-by: Ben Evans <jevans@cray.com>
Reviewed-on: https://review.whamcloud.com/38243
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Alexander Boyko <alexander.boyko@hpe.com>
Reviewed-by: Ben Evans <beevans@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-9859 libcfs: replace memory_presure functions by standard interfaces 11/38211/9
Mr NeilBrown [Mon, 4 May 2020 15:43:58 +0000 (11:43 -0400)]
LU-9859 libcfs: replace memory_presure functions by standard interfaces

Use memalloc_noreclaim_save() and memalloc_noreclaim_restore(),
and for testing, just directly test the flag in current->flags

Linux-commit: fa399093620b867afe7686be47f197c8f17908c5

Change-Id: Id8f68164a7532ee4a816c71aff922f484c04877d
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-on: https://review.whamcloud.com/38211
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
3 years agoLU-13426 mdd: correctly swap OIs during migration 72/38172/5
Mikhail Pershin [Wed, 8 Apr 2020 08:07:47 +0000 (11:07 +0300)]
LU-13426 mdd: correctly swap OIs during migration

While swapping layouts mdd_swap_layouts() swaps also OI(FID)
and uses lmm->lmm_oi directly in one place which is wrong if
corresponding layout is composite. Layout OI should be taken
by using mdd_get_lmm_oi() which handles all layout types
correctly.

Patch fixes that by using mdd_get_lmm_oi() instead of direct
access to lmm_oi field.

Signed-off-by: Mikhail Pershin <mpershin@whamcloud.com>
Change-Id: I6a7dc9ece3b272f75a5f206b32937cf9f674ead9
Reviewed-on: https://review.whamcloud.com/38172
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Lai Siyao <lai.siyao@whamcloud.com>
3 years agoLU-13415 dom: use DoM optimization for DOM+OST files 52/38152/5
Mikhail Pershin [Tue, 7 Apr 2020 12:52:06 +0000 (15:52 +0300)]
LU-13415 dom: use DoM optimization for DOM+OST files

Most DoM optimizations are used while DoM file has only
DoM stripe, assuming that with initialized OST stripes
most IO activity are shifted to OSTs. That is not quite
true because OST stripes can be initialized by any append
to the DoM file, so it still uses only DoM stripe but has
OST objects allocated.

Patch keeps DoM optimizations even if OST stripes are
initialized with few extra checks:
- for read-on-open it doesn't read file tail if whole DoM
  stripe is filled
- for IO lock-on-open feature it uses 'trylock' mode when
  taking DOM IO lock for files having OST stripes

Test-Parameters: mdssizegb=20 testlist=dom-performance
Signed-off-by: Mikhail Pershin <mpershin@whamcloud.com>
Change-Id: I268bbbc947ca3e5d86339ce1a27d4641ca405a80
Reviewed-on: https://review.whamcloud.com/38152
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13344 lnet: stop using struct timeval 05/38105/21
James Simmons [Wed, 6 May 2020 21:41:58 +0000 (17:41 -0400)]
LU-13344 lnet: stop using struct timeval

The struct timeval is not 2038 safe so the Linux kernel is moving
away from its use. The use of rpe_stamp hasn't been used since
Lustre 2.2 so remove the userland use of this field. This frees
use to change rpe_stamp to an equivalent struct timespec64 for
future use. Greatly simplify lnet_sock_[read|write] by using
jiffies values of sk_sndtimeo, sk_rcvtimeo cached in struct sock.

Change-Id: Ib58193756ec4a526e55bc810c05abd3920b2b269
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/38105
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Tested-by: Maloo <maloo@whamcloud.com>
3 years agoLU-13279 tests: sanityn.sh:test_20 takes DoM into account 62/37662/3
Vladimir Saveliev [Fri, 21 Feb 2020 00:17:10 +0000 (03:17 +0300)]
LU-13279 tests: sanityn.sh:test_20 takes DoM into account

sanityn.sh:test_20() should also cancel MDC locks as layout of files
may include DoM component.

Test-Parameters: testlist=sanityn
Cray-bug-id: LUS-8348
Signed-off-by: Vladimir Saveliev <c17830@cray.com>
Change-Id: I6157038235590d3c5b06d910c3b3d2600968a812
Reviewed-on: https://review.whamcloud.com/37662
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Mike Pershin <mpershin@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
3 years agoLU-12974 lfsck: dryrun mode shouldn't repair for layout 67/36767/5
Lai Siyao [Mon, 9 Sep 2019 02:39:01 +0000 (10:39 +0800)]
LU-12974 lfsck: dryrun mode shouldn't repair for layout

"lfsck_start -t layout --dryrun" shouldn't repair but report
inconsistencies.

Update sanity-lfsck.sh 18b.

Test-parameters: trivial testlist=sanity-lfsck envdefinitions=ONLY=18
DDN-Bug-ID: DDN-892

Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: Ie1f4d0d1726e8f3f39f5a8b7be9cc149df1c1e44
Reviewed-on: https://review.whamcloud.com/36767
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
3 years agoLU-11971 utils: Send file creation time to clients 07/36507/20
Qian Yingjin [Sat, 19 Oct 2019 08:46:36 +0000 (16:46 +0800)]
LU-11971 utils: Send file creation time to clients

Both ext4 and ZFS allow storing the file creation time in the
on-disk inode, and the new statx() API allows returning it to
userspace, but as yet we do not have any mechanism to send it
from the servers to the client.

Add fields into struct mdt_body and an OBD_MD_FLBTIME flag to
allow it to be requested and returned directly from MDTs. It
does not need to get it from the OSTs or in the LVB since those
objects are precreated and their creation time (birth time) is
not accurate.

This patch also adds support to lfs find to query on this field.

Signed-off-by: Qian Yingjin <qian@ddn.com>
Change-Id: Ib122b336695cde511fa6d8fb9eca95a4da701430
Reviewed-on: https://review.whamcloud.com/36507
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Li Xi <lixi@ddn.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12214 build: fix build without lustre_utils 29/36429/11
Alexey Lyashkov [Fri, 8 Nov 2019 07:58:30 +0000 (10:58 +0300)]
LU-12214 build: fix build without lustre_utils

fix build without_lustre_utils enabled.
library and tools man pages separated to avoid package
build breakage.

Cray-bug-id: LUS-6036
Test-parameters: trivial
Change-Id: I0dbf821cff85b336d26555b6f2a8b659d9203de9
Signed-off-by: Alexey Lyashkov <c17817@cray.com>
Reviewed-on: https://review.whamcloud.com/36429
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Alexander Boyko <alexander.boyko@hpe.com>
Reviewed-by: Olaf Faaland-LLNL <faaland1@llnl.gov>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12652 ldiskfs: disable credits check in 4.18 50/35750/19
Alexey Zhuravlev [Fri, 9 Aug 2019 10:55:24 +0000 (13:55 +0300)]
LU-12652 ldiskfs: disable credits check in 4.18

4.18 has a credits check in xattr_set path with different math
resulting in false ENOSPC and subsequent failure to update LMA.
as a result - many tests fail on 4.18, especially with DNE.

Signed-off-by: Alexey Zhuravlev <bzzz@whamcloud.com>
Change-Id: I82b19c0c24988aed66d74cf2323e93acffb14f31
Reviewed-on: https://review.whamcloud.com/35750
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Wang Shilong <wshilong@ddn.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13502 lnet: Add MD options for response tracking 50/38450/3
Chris Horn [Fri, 1 May 2020 20:49:35 +0000 (15:49 -0500)]
LU-13502 lnet: Add MD options for response tracking

These MD options will allow response tracking on a particular MD to
override the behavior specified by the lnet_response_tracking
parameter.

Test-Parameters: trivial
Signed-off-by: Chris Horn <hornc@cray.com>
Change-Id: I2dee4e863138c1fe2ab1a1243c4c9e75e876f58f
Reviewed-on: https://review.whamcloud.com/38450
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: Amir Shehata <ashehata@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13499 obd: fix printing of client connection UUID 43/38443/2
Andreas Dilger [Fri, 1 May 2020 08:02:22 +0000 (02:02 -0600)]
LU-13499 obd: fix printing of client connection UUID

The client connection UUID sent to the servers (ASCII format) was
being truncated to only 16 bytes in size, like '595f3c6a-20ae-4'
instead of a full UUID like '18ae0f9a-4b09-4599-8ced-0f2126eab425'.

This was caused by using UUID_SIZE to limit the size of the "%pU"
string printed to avoid overflowing the target buffer, but in fact
UUID_SIZE is the size of the binary uuid_t (16 bytes) instead of
the size of struct obd_uuid (40 bytes) where the ASCII version of
the UUID is stored.

Fix this to use sizeof(target) rather than an external constant,
which is exactly why sizeof(target) should always be used.  The
usage in osd_scrub.c is not actually broken, but it is still
better to use sizeof(target) to avoid future inconsistencies.

Fixes: 604c266a175b7 ("LU-11803 obd: replace class_uuid with linux kernel version")
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I05325646cd632a09997d6632a483909629ce7057
Reviewed-on: https://review.whamcloud.com/38443
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Arshad Hussain <arshad.super@gmail.com>
Reviewed-by: Mike Pershin <mpershin@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13168 tests: verify truncated xattr is handled 34/38434/5
Andreas Dilger [Thu, 30 Apr 2020 22:20:01 +0000 (16:20 -0600)]
LU-13168 tests: verify truncated xattr is handled

Verify that a truncated trusted.lov xattr is handled properly,
for both plain and PFL layouts.

Add a test case that verifies this is fixed for both layout types.

Fixes: f2d06d3c76 ("LU-12911 llite: Don't access lov_md fields before size check")
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I11d420c7fdc2362f64689a545b95c76e893ebbe5
Reviewed-on: https://review.whamcloud.com/38434
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Sebastien Buisson <sbuisson@ddn.com>
Reviewed-by: Emoly Liu <emoly@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13490 lustre: fix to make jobstats work for async ra 26/38426/4
Wang Shilong [Thu, 30 Apr 2020 11:42:29 +0000 (19:42 +0800)]
LU-13490 lustre: fix to make jobstats work for async ra

We use workqueue to triger async readahead, this will make
the problem that read jobstats are not accounted by real
IO, we could fix this by overwritting jobid which inited in
vvp_io_init().

Change-Id: I20b00b17f7a90cf94f1e5be54f47aee8ea2e5440
Signed-off-by: Wang Shilong <wshilong@ddn.com>
Reviewed-on: https://review.whamcloud.com/38426
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Ben Evans <beevans@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-6142 misc: declare static chars as const where possible. 21/38421/3
Mr NeilBrown [Wed, 29 Apr 2020 23:39:04 +0000 (09:39 +1000)]
LU-6142 misc: declare static chars as const where possible.

When a char * is statically initialized to a literal string, it is
best if the char is declared 'const' to ensure that literal string can
never be changed, and to allow it to be stored in read-only memory.

Unfortunately this is not possible for strings used as module
parameters.  Similarly osd_0copy_tag in osd-zfs cannot be made const,
so that is change to a simple array (no pointer).

But in many other places it is possible, and it requires all ultimate
users of the string to declare that they are working with const chars.

This patch changes a collection of static char*s to const, and in many
cases arrays of char * to "const char * const", and then propagates
the 'const' annotion as needed.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I3185a6cd0d1b8a7dbd83698f456f65f47b4f2954
Reviewed-on: https://review.whamcloud.com/38421
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-10467 llite: clean up pcc_layout_wait() 03/38403/3
Mr NeilBrown [Tue, 28 Apr 2020 23:27:51 +0000 (09:27 +1000)]
LU-10467 llite: clean up pcc_layout_wait()

pcc_layout_wait() contains a pointless while loop (and an unnecessary
blank line) and is a trivial function that is only called once.

So move the code into __pcc_layout_invalidate(), remove the while
loop, and generally tidy up.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I4a7c721a562682906dec4996bfbdad03e26a01dd
Reviewed-on: https://review.whamcloud.com/38403
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Yingjin Qian <qian@ddn.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-6142 osd-zfs: convert container_of0() to container_of() 79/38379/2
Mr NeilBrown [Mon, 27 Apr 2020 04:53:12 +0000 (14:53 +1000)]
LU-6142 osd-zfs: convert container_of0() to container_of()

Every use of container_of0() in osd-zfs can safely use container_of()
instead.  Doing so makes the intent of the code clearer.

In most cases, the pointer returned is later dereferenced without any
subsequent checks.  In a few cases (e.g.  in osd_internal.h), the
pointer passed in is dereferenced before the container_of() call.
These patterns assure us that the pointer in valid (not NULL or an
ERR_PTR), so container_of() is the correct interface to use.

Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I3f6d35c8b5beee09561e78c5eb20bb89d322590b
Reviewed-on: https://review.whamcloud.com/38379
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Olaf Faaland-LLNL <faaland1@llnl.gov>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-6142 lnet: use BIT() macro where appropriate 75/38375/2
Mr NeilBrown [Mon, 27 Apr 2020 03:38:37 +0000 (13:38 +1000)]
LU-6142 lnet: use BIT() macro where appropriate

When accessing a bit in a bitmap/mask/flags-word it can be more
readable to use BIT(num) rather than "1 << num".

This patch makes that change to various places in lnet.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I9a9234221f550c29f7799b0654c89ea9224c6d92
Reviewed-on: https://review.whamcloud.com/38375
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Olaf Faaland-LLNL <faaland1@llnl.gov>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-6142 libcfs: use BIT() macro where appropriate 74/38374/2
Mr NeilBrown [Mon, 27 Apr 2020 03:36:17 +0000 (13:36 +1000)]
LU-6142 libcfs: use BIT() macro where appropriate

When accessing a bit in a bitmap/mask/flags-word it can be more
readable to use BIT(num) rather than "1 << num".

This patch makes that change to various places in libcfs.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I5e945358d2385599f8fe6f1ddff310efe17b589f
Reviewed-on: https://review.whamcloud.com/38374
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Olaf Faaland-LLNL <faaland1@llnl.gov>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13054 ldiskfs: split htree_lock as separate patch 72/38372/5
Yang Sheng [Sun, 26 Apr 2020 11:59:16 +0000 (19:59 +0800)]
LU-13054 ldiskfs: split htree_lock as separate patch

The htree_lock part is identical in the different
distro version of pdirop patch. So move it out as
separate patch to reduce maintenance effort.

Signed-off-by: Yang Sheng <ys@whamcloud.com>
Change-Id: I423cc957de37ccdb097c9893f69481ce947ac78c
Reviewed-on: https://review.whamcloud.com/38372
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13054 ldiskfs: htree_node wrongly granted 71/38371/4
Yang Sheng [Sun, 26 Apr 2020 11:56:40 +0000 (19:56 +0800)]
LU-13054 ldiskfs: htree_node wrongly granted

The thread was waken up accidently. So need check
whether the lock granted or not after wake up.
Also fix issue that major always set to 0 since
hbit initialize incorrect. The performace should be
impacted especial operate in big directory.

kernel BUG at lustre/ldiskfs/htree_lock.c:429!
 Call Trace:
 htree_node_release_all+0x5a/0x80 [ldiskfs]
 htree_unlock+0x22/0x70 [ldiskfs]
 osd_index_ea_delete+0x30e/0xb10 [osd_ldiskfs]
 lod_sub_delete+0x1c8/0x460 [lod]
 lod_delete+0x24/0x30 [lod]
 __mdd_index_delete_only+0x194/0x250 [mdd]
 __mdd_index_delete+0x46/0x290 [mdd]
 mdd_unlink+0x5f8/0xaa0 [mdd]
 mdo_unlink+0x46/0x48 [mdt]
 mdt_reint_unlink+0xbed/0x14b0 [mdt]

Signed-off-by: Yang Sheng <ys@whamcloud.com>
Change-Id: I5972961bc78b349214c6756642717d126f0c4b26
Reviewed-on: https://review.whamcloud.com/38371
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12511 build: don't use OpenSFS UAPI headers with --disable-modules 70/38370/2
James Simmons [Sun, 26 Apr 2020 17:33:31 +0000 (13:33 -0400)]
LU-12511 build: don't use OpenSFS UAPI headers with --disable-modules

If we configure Lustre with --disable-modules that means we want
to use the native Linux Lustre / LNet UAPI headers instead. To do
this only include OpenSFS UAPI header path when Lustre modules are
enabled.

Change-Id: Id0f4d960d51bf02a6e24d2e3ad2544df10384533
Test-Parameters: trivial
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/38370
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Nathaniel Clark <nclark@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-9679 various: use OBD_ALLOC_PTR_ARRAY() and others 50/38250/8
Mr NeilBrown [Thu, 14 Nov 2019 03:20:01 +0000 (14:20 +1100)]
LU-9679 various: use OBD_ALLOC_PTR_ARRAY() and others

Use:
  OBD_ALLOC_PTR_ARRAY
  OBD_FREE_PTR_ARRAY
  OBD_ALLOC_PTR_ARRAY_LARGE
  OBD_FREE_PTR_ARRAY_LARGE

for allocating and freeing arrays in various modules.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I0c65759e99fde15168f190ea74cd88b3cb01f667
Reviewed-on: https://review.whamcloud.com/38250
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
3 years agoLU-9679 obdclass: use OBD_ALLOC_PTR_ARRAY() and others 21/38121/4
Mr NeilBrown [Thu, 14 Nov 2019 03:20:01 +0000 (14:20 +1100)]
LU-9679 obdclass: use OBD_ALLOC_PTR_ARRAY() and others

Use:
  OBD_ALLOC_PTR_ARRAY
  OBD_ALLOC_PTR_ARRAY_WAIT
  OBD_FREE_PTR_ARRAY
  OBD_ALLOC_PTR_ARRAY_LARGE
  OBD_FREE_PTR_ARRAY_LARGE

for allocating and freeing arrays in obdclass

Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I2ebf853769a9711f1f99431aa7f69a18ba2ea552
Reviewed-on: https://review.whamcloud.com/38121
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
3 years agoLU-11023 quota: quota pools for OSTs 15/35615/52
Sergey Cheremencev [Fri, 12 Jul 2019 13:38:35 +0000 (16:38 +0300)]
LU-11023 quota: quota pools for OSTs

Patch allows to apply quota settings
not only for the whole system, but also
for different OST pools. Since this patch
each "LOD" pool is duplicated by QMT.
Thus quota pools(QP) could be tuned by
standard lctl pool_new/add/remove/erase
commands. All QPs are subset of a global pool
that includes all data devices in a system,
including DOM. However DOM is not supported.
I don't see a lot of work to add DOM support
in future - just need to decide how MDTs
could be combined in a pool.

The main idea of QP is to find all pools
for requested ID(usr/grp/prj) and apply
minimum limit. The patch doesn't affect
qsd side, so slaves know nothing about
pools and different limits. Qunit and edquot
are calculated for each slave on master.

To apply quota on QP, the patch adds key "-o"
to lfs setquota. To get quotas for QP, it
provides long option "--pool" in lfs quota.
See examples of using in sanity-quota_1b/c/d.

Now QPs work properly only on a clean system.
Support of recalculation granted space in case
of adding/removing OSTs in a pool will be added
in the next patch together with accounting
already granted space by each ID in a POOl.

Test-Parameters: testgroup=review-dne-part-4

Change-Id: I3396aded2156729b4fd15166eb59db59ee4c967e
Signed-off-by: Sergey Cheremencev <c17829@cray.com>
Reviewed-on: https://review.whamcloud.com/35615
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13137 llite: do not flush COW pages from mapping 78/37278/17
Bobi Jam [Tue, 21 Jan 2020 07:35:17 +0000 (15:35 +0800)]
LU-13137 llite: do not flush COW pages from mapping

Do not flush COW pages from an executable mapping, as this will cause
running binaries to segfault when mapped pages disappear under them.

This was modified to allow non-blocking PCC caching, but triggers
immediate segfaults for binaries when the DLM locks are revoked, even
when PCC is not in use.

The added test case failed 100% without this patch.

This patch is only a partial fix to avoid the segfaults.  There still
needs to be something done to re-introduce the PCC functionality, but
should be conditional on PCC enabled, and not for running binaries.

There is a problem for PCC when multiple clients read/write on a
shared mmapped file. We exclude mmap_sanity tst6 in test_4 from
PCC testing temporarily.

Test-Parameters: testlist=sanity envdefinitions=ONLY=30d
Test-Parameters: testlist=sanity envdefinitions=ONLY=30d
Test-Parameters: testlist=sanity envdefinitions=ONLY=30d
Fixes: 58d744e3eaab ("LU-10092 pcc: Non-blocking PCC caching")
Change-Id: I7084e1db1f0f29cb0237b619abd33ca556aa7ec7
Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/37278
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Yingjin Qian <qian@ddn.com>
Reviewed-by: Stephan Thiell <sthiell@stanford.edu>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-9859 libcfs: add support for Xarray 91/37391/9
James Simmons [Wed, 29 Apr 2020 12:37:32 +0000 (08:37 -0400)]
LU-9859 libcfs: add support for Xarray

In the late 4.X kernel cycle Xarrays were introduced with the
goal of replacing the radix tree for the page cache. It is
highly optimized for densely packed data which is the case for
several items in Lustre such as the static array for the obd
devices and quota ids. This patch provides Xarray support for
kernels that lack. The current verison of Xarray back ported
is from the 5.4-rc2 kernel.

Change-Id: I54f9046f50a353e1cd4271c0b97207062bbf3898
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/37391
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Neil Brown <neilb@suse.de>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-10973 lnet: dump cyaml to buffer 82/38082/5
Amir Shehata [Sat, 14 Dec 2019 23:20:03 +0000 (15:20 -0800)]
LU-10973 lnet: dump cyaml to buffer

Add a new API to dump cyaml to a buffer which gets returned to the
user. The user is then responsible for freeing the buffer.

This is a new API required by the LUTF in order to interface
with python more readily.

Test-Parameters: trivial
Signed-off-by: Amir Shehata <ashehata@whamcloud.com>
Change-Id: I6068670f26b617d7a8366bd248dd80ca8cf15e5e
Reviewed-on: https://review.whamcloud.com/38082
Reviewed-by: James Simmons <jsimmons@infradead.org>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13138 tests: measure 'dd' time more accurately 27/38427/3
Andreas Dilger [Thu, 30 Apr 2020 06:36:21 +0000 (00:36 -0600)]
LU-13138 tests: measure 'dd' time more accurately

The sanity test_101d can fail with 'readahead 5s > no-readahead 5s'
because the "do_and_time" function only measures runtime in whole
seconds.  Also, in some rare cases, the VM might be slow and cause
the runtime of the do_and_time() function to be slow, even if the
"dd" command finished quickly.

Instead of timing the duration of "dd" in seconds, parse the output
from "dd" directly, which provides fractional second precision.

Test-Parameters: trivial testlist=sanityn
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I5f1ec0374c6a9b9c175db77b2b972e3b433ebbe5
Reviewed-on: https://review.whamcloud.com/38427
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Nunez <jnunez@whamcloud.com>
Reviewed-by: Wei Liu <sarah@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-9859 libcfs: hide struct cfs_cpt_table internals 89/38389/2
James Simmons [Mon, 27 Apr 2020 15:49:33 +0000 (11:49 -0400)]
LU-9859 libcfs: hide struct cfs_cpt_table internals

Exposing the internals of struct cfs_cpt_table in the libcfs
header used by lustre makes it too tempting to use but those
fields are not available for UP systems. Make cfs_cpt_table
abstract so the lustre and LNet code will never use the
internals and instead use the functions provided in
libcfs_cpu.h.

Linux-commit: commit a6fe6f584b6a1032c2e63e94d7a7a6f1436c3774

Change-Id: Ia2b3363bcee87e042a133cc7af9a912cbafb0d92
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/38389
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Neil Brown <neilb@suse.de>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13449 tgt: fix recovery timer comparisons 66/38366/2
Andreas Dilger [Sat, 25 Apr 2020 10:19:42 +0000 (04:19 -0600)]
LU-13449 tgt: fix recovery timer comparisons

The obd_recovery_start time was changed to use a monotonic kernel
clock via ktime_get_seconds(), which is a relative kernel time in
newer kernels.  However, it was still being compared with wallclock
time in some places, which lead to incorrect calculations.

Always use the monotonic clock within the kernel, but convert the
times to wallclock time when they are printed to userspace.

Fix the added recovery-small test_140b to use the actual recovery time
rather than the entire failover time, since that may increased too
much by operations unrelated to the MDS recovery.

Fixes: 8bd04b4e5766 ("LU-12722 target: disable recovery for local clients")
Fixes: 06408a4ef381 ("LU-12769 recovery: use monotonic timer")
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: Ibe866463cbad81010e91f630a1088990f8a48664
Reviewed-on: https://review.whamcloud.com/38366
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13466 mgc: protect from NULL exp in mgc_enqueue() 80/38280/2
Sebastien Buisson [Mon, 20 Apr 2020 08:50:25 +0000 (10:50 +0200)]
LU-13466 mgc: protect from NULL exp in mgc_enqueue()

Return an error in mgc_enqueue() is exp parameter is NULL.
Otherwise, it might crash in class_exp2cliimp().

Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: I9be0bf57c6a21c83abb08b261f548128114c33f2
Reviewed-on: https://review.whamcloud.com/38280
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
3 years agoLU-13405 kernel: kernel update SLES15 SP1 [4.12.14-197.37.1] 45/38245/3
Jian Yu [Wed, 15 Apr 2020 23:35:59 +0000 (16:35 -0700)]
LU-13405 kernel: kernel update SLES15 SP1 [4.12.14-197.37.1]

Update SLES15 SP1 kernel to 4.12.14-197.37.1 for Lustre client.

Test-Parameters: trivial \
envdefinitions=SANITY_EXCEPT="56oc 100 130 136 817" \
clientdistro=sles15sp1 serverdistro=el7.8 \
testlist=sanity

Change-Id: I914a3cb756a1559142d334ec78076bc0be5e03cd
Signed-off-by: Jian Yu <yujian@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/38245
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Minh Diep <mdiep@whamcloud.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13421 kernel: kernel update RHEL8.1 [4.18.0-147.8.1.el8_1] 26/38226/3
Jian Yu [Wed, 15 Apr 2020 00:24:49 +0000 (17:24 -0700)]
LU-13421 kernel: kernel update RHEL8.1 [4.18.0-147.8.1.el8_1]

Update RHEL8.1 kernel to 4.18.0-147.8.1.el8_1.

Test-Parameters: trivial \
clientdistro=el8.1 serverdistro=el8.1 \
testlist=sanity

Change-Id: I7484da780f731b89baf92b5eebebb601d9a27b86
Signed-off-by: Jian Yu <yujian@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/38226
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Minh Diep <mdiep@whamcloud.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-9859 libcfs: remove conditional compilation from libcfs_cpu.c 81/37881/10
Mr NeilBrown [Wed, 22 Apr 2020 12:58:39 +0000 (08:58 -0400)]
LU-9859 libcfs: remove conditional compilation from libcfs_cpu.c

libcfs_cpu.c manages CPU partitions. In the !CONFIG_SMP case, most
of this disappears and 'static inline's from libcfs_cpu.h are used.
However we still allocate a 'struct cfs_cpt_table' which is used
to keep the NUMA node mask. Event with SMP disabled Lustre wants
to handle any NUMA nodes available.

This patch removes all the !CONFIG_SMP code from libcfs_cpu.c and
conditionally compiles the whole file only when CONFIG_SMP.
We no longer allocate a 'struct cfs_cpt_table' on !CONFIG_SMP,
and don't even declare a structure.  The name "cfs_cpt_tab"
becomes always "NULL", which allows some code to be optimized away.

This means that cfs_cpt_tab can sometimes be NULL, so we need to
discard the assertion that it isn't.

Linux-commit: 7b8e2026fb185e5178f9137c463ff07fc895be5d

Test-Parameters: trivial
Change-Id: Icb84f23249d086c662de76df6ce9686de0b692aa
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-on: https://review.whamcloud.com/37881
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13238 ofd: add OFD access logs 52/37552/16
John L. Hammond [Tue, 28 Jan 2020 15:29:52 +0000 (09:29 -0600)]
LU-13238 ofd: add OFD access logs

Add access logs to OFD layer. BRW RPC handlers will record accesss to
an in memory circular buffer which may be read in userspace through
character devices (/dev/lustre-access-log/$FSNAME-OSTxxxx). A control
device (/dev/lustre-access-log/control) is added to facilitate device
discovery. A utility (ofd_access_log_reader) to discover and consume
access logs is included.

Signed-off-by: John L. Hammond <jhammond@whamcloud.com>
Change-Id: I76b78cc5075ee01f9b234e96e7a22a1bdcf2f755
Reviewed-on: https://review.whamcloud.com/37552
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Gu Zheng <gzheng@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13465 vfs: make ll_vfs_setxattr return -EOPNOTSUPP 01/38301/5
Sebastien Buisson [Tue, 21 Apr 2020 07:28:20 +0000 (09:28 +0200)]
LU-13465 vfs: make ll_vfs_setxattr return -EOPNOTSUPP

New compat macros ll_vfs_setxattr/ll_vfs_removexattr need to return
-EOPNOTSUPP instead of -ENOTSUPP. Indeed, the llapi_layout_get_by_fd()
code checks for "-EOPNOTSUPP" and handles this specially.

Also, the case of missing i_op->setxattr() and i_op->getxattr() can be
considered unlikely.

Test-Parameters: clientversion=2.12 envdefinitions=SANITY_EXCEPT="27M 56ra 151 156 802"
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: I2474c184a1597979971881de84638fb8d281f704
Reviewed-on: https://review.whamcloud.com/38301
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13465 mgs: re-introduce mgs_set_info for interop purpose 11/38311/4
Sebastien Buisson [Wed, 22 Apr 2020 13:54:53 +0000 (22:54 +0900)]
LU-13465 mgs: re-introduce mgs_set_info for interop purpose

Older clients might send MGS_SET_INFO requests to the MGS. Newer MGS
needs to handle that gracefully by returning:
- -EINVAL for anything other than lov.stripe*
- 0 for those parameters without doing anything, rather than
  returning -ENOTSUPP.

Test-Parameters: clientversion=2.12 envdefinitions=SANITY_EXCEPT="27M 56ra 151 156 802"
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: Iba75c788eaefabd98bbb65a657f9a0150e20fafb
Reviewed-on: https://review.whamcloud.com/38311
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12780 target: don't use ptlrpc_thread for txn_commit_thread 60/36260/10
Mr NeilBrown [Wed, 23 Oct 2019 00:30:49 +0000 (11:30 +1100)]
LU-12780 target: don't use ptlrpc_thread for txn_commit_thread

rather than ptlrpc_thread, use native kthreads functionality.

- there is no need to synchronize on startup, the initialization
  can be done before the thread is started.  This requires adding
  an lu_env to struct target_distribute_txn_data so
  distribute_txn_init() can set it up before starting the thread.

- correspondingly, the cleanup is best done outside of the thread too,
  as it is possible for kthread_stop() to stop a thread before
  the function is called even once.  So the lu_env_fini is moved to
  distrbute_txn_fini().  and ->tdtd_list is cleaned up there too
  just incase the thread didn't have a chance to run.

- kthread_stop/kthread_should_stop is used to synchornize
  shutdown

- signaling the thread is done with wake_up_process().
  The thread sets TASK_IDLE at the top of the loop, then
  sets TASK_RUNNING if it finds anything to do, and finally
  calls schedule() at the end.  This makes
  tdtd_ready_for_cancel_log() unnecesary as it just duplicates
  checks that are already present in distribute_txn_commit_thread().

Change-Id: I06c3686b90faa6c6b638b8d6c69cd4e05c2783f4
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Reviewed-on: https://review.whamcloud.com/36260
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: Mike Pershin <mpershin@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-9859 libcfs: handle missing refcount.h 90/38390/3
James Simmons [Wed, 29 Apr 2020 12:32:39 +0000 (08:32 -0400)]
LU-9859 libcfs: handle missing refcount.h

Recently the OpenSFS tree was modified to make backported headers to
appear like native Linux kernel headers to avoid ifdef handling. One
missed is refcount.h. Rename linux-refcount.h to refcount.h to make
it look like the native kernel version. Change EXTRA_KCFLAGS to not
include the Lustre include directories since it contains the fake
kernel headers in the autoconf test. Also remove stray
LC_REPLACE_EXCEPTIONAL_ENTRIES.

Change-Id: Ia5de6dab0837db419a6b02b3b2a6ddeb6bb62f03
Test-Parameters: trivial
Fixes: 742897a967cf ("LU-13274 uapi: make lnet UAPI headers C99 compliant")
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/38390
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Neil Brown <neilb@suse.de>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-6142 lustre: Remove inappropriate uses of BIT() macro. 73/38373/2
Mr NeilBrown [Mon, 27 Apr 2020 03:32:27 +0000 (13:32 +1000)]
LU-6142 lustre: Remove inappropriate uses of BIT() macro.

The BIT() macro exists for identifying a specific bit in a word when
it is being used as a bitmap (or mask for set of flags etc).
While it uses "1 << ...." it is not a general replacement for that
construct and should not be used to simply to raise '2' to some power.

Varous places in lustre and libcfs use BIT() when a size, rather than
a BIT, are required.  Convert these to explicitly use "1 << exponent".

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I41e1e188da4d2e5dff5b2c05cec607c1d104bcfa
Reviewed-on: https://review.whamcloud.com/38373
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Olaf Faaland-LLNL <faaland1@llnl.gov>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12511 build: avoid building rpm with --disable-modules 69/38369/3
James Simmons [Sun, 26 Apr 2020 15:12:14 +0000 (11:12 -0400)]
LU-12511 build: avoid building rpm with --disable-modules

If you configure lustre with --disable-modules this will prevent
OpenSFS lustre modules from being built but make rpms will fail
since it still expects built modules. Update the lustre.spec
file to not package any modules when --disable-modules is set.

Test-Parameters: trivial
Change-Id: Ide8d80f5b36f819b486a143e56daf494e6a1fe23
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/38369
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Nathaniel Clark <nclark@whamcloud.com>
Reviewed-by: Neil Brown <neilb@suse.de>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12222 lnet: Primary NID of lolnd NID is the lolnd NID 13/38313/3
Chris Horn [Wed, 22 Apr 2020 16:42:27 +0000 (11:42 -0500)]
LU-12222 lnet: Primary NID of lolnd NID is the lolnd NID

We want Lustre traffic that is intended for the local peer to be sent
and received over the lolnd. The function ptlrpc_uuid_to_peer() will
currently resolve a NID to the lolnd NID, but ptlrpc_connection_get()
will overwrite this selection with the result from LNetPrimaryNID().

Have LNetPrimaryNID return the lolnd NID when it is passed the lolnd
NID.

HPE-bug-id: LUS-8457
Signed-off-by: Chris Horn <hornc@cray.com>
Change-Id: I02708bb45f8440091782ca7886bac7656efb0223
Reviewed-on: https://review.whamcloud.com/38313
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12222 lnet: Introduce constant for the lolnd NID 12/38312/3
Chris Horn [Wed, 22 Apr 2020 16:39:46 +0000 (11:39 -0500)]
LU-12222 lnet: Introduce constant for the lolnd NID

This patch adds a new constant, LNET_NID_LO_0, to represent the lolnd
NID 0@lo.

HPE-bug-id: LUS-8457
Signed-off-by: Chris Horn <hornc@cray.com>
Change-Id: I3e57637f297b8de306905a447af8f025e31d1fcf
Reviewed-on: https://review.whamcloud.com/38312
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-9679 osd: use OBD_ALLOC_PTR_ARRAY() and others 52/38252/3
Mr NeilBrown [Thu, 14 Nov 2019 03:20:01 +0000 (14:20 +1100)]
LU-9679 osd: use OBD_ALLOC_PTR_ARRAY() and others

Use:
  OBD_ALLOC_PTR_ARRAY
  OBD_FREE_PTR_ARRAY
  OBD_ALLOC_PTR_ARRAY_LARGE
  OBD_FREE_PTR_ARRAY_LARGE

for allocating and freeing arrays in osd-ldiskfs and osd-zfs.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: Iec2ec54e0b87aeefb42d5b4ab802c564850f6edd
Reviewed-on: https://review.whamcloud.com/38252
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13389 tgt: not rollback obsolete rq 21/38221/3
Alexander Zarochentsev [Sat, 4 Apr 2020 06:44:26 +0000 (09:44 +0300)]
LU-13389 tgt: not rollback obsolete rq

Restoring old pre-LU-11444 behavior in
last_rcvd/reply_data update, do not generate
a error for obsolete requests. Othewise tx_end
tries to rollback the operation and does it partially
leaving inodes unattached and changelog records not cleared;
Fixing reply_data slot leak on error.

Fixes: 23773b3 ("LU-11444 ptlrpc: resend may corrupt the data")
HPE-bug-id: LUS-8590
Signed-off-by: Alexander Zarochentsev <alexander.zarochentsev@hpe.com>
Change-Id: I76c2de7b820da0239ce2f0a9d17b7dedadc0519b
Reviewed-on: https://review.whamcloud.com/38221
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andriy Skulysh <c17819@cray.com>
Reviewed-by: Alexander Boyko <alexander.boyko@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13429 lov: lov_io_sub_init()) ASSERTION 69/38169/4
Bobi Jam [Wed, 8 Apr 2020 07:36:42 +0000 (15:36 +0800)]
LU-13429 lov: lov_io_sub_init()) ASSERTION

The assertion is_index_within_mirror() in lov_io_sub_init() should
only be applied for a FLR file, since a plain file does not initialize
the relevant FLR fields of the layout structure.

Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Change-Id: I0d6ff505d789c76e7912aa08491146706b5316bc
Reviewed-on: https://review.whamcloud.com/38169
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Wang Shilong <wshilong@ddn.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-11025 uapi: add OBD_CONNECT2_FIDMAP 32/38232/3
Lai Siyao [Wed, 15 Apr 2020 02:46:00 +0000 (10:46 +0800)]
LU-11025 uapi: add OBD_CONNECT2_FIDMAP

Add OBD_CONNECT2_FIDMAP connect flag, which indicates whether client
supports FID mapping.

Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: I165598e7d19878d1d3dcfa8c6f8fcc3cc233e4c9
Reviewed-on: https://review.whamcloud.com/38232
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
3 years agoLU-12785 dom: adjust DOM stripe size by free space 04/37904/6
Mikhail Pershin [Thu, 12 Mar 2020 09:53:37 +0000 (12:53 +0300)]
LU-12785 dom: adjust DOM stripe size by free space

Make DoM default stripe size dependent on filesystem free
space. If free space become less than some defined threshold
then DoM stripe size of new files is decreased along with
free space remaining up to zero. It will grow back up to
defined maximum when more free space occur.

- introduce new tunable lod.*.dom_threshold_free_mb as free
  space threshold below which default DOM stripe size will
  decrease down to zero. Units are MiB but it can be set also
  in percentage of free space:

  # lctl set_param lod.*.dom_threshold_free_mb=100GiB
  or
  # lctl set_param lod.*.dom_threshold_free_mb=10%

- rename lod.*.dom_stripesize to lod.*.dom_stripesize_max_kb to
  reflect that this is maximum limit for DOM stripe size on MDT,
  used as KiB value. Old lod.*.dom_stripesize is kept for
  compatibility.
- new read-only parameter lod.*.dom_stripesize_cur_kb to read
  current default DoM stripesize. It is autotuned depending on
  dom_threshold_free_mb parameter and amount of free space.
- OSD statfs data used in calculations are cached in LOD, so
  DoM default stripesize is not recalculated upon each create
  but happens not often that once per 10 sec and when tunables
  are being changed
- add corresponding test 270g in sanity.sh

Signed-off-by: Mikhail Pershin <mpershin@whamcloud.com>
Change-Id: Id27815ec38ae11762c74c0097c5862eaa3dbda24
Reviewed-on: https://review.whamcloud.com/37904
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
3 years agoLU-13064 sec: check permissions for changelogs access 90/36990/32
Sebastien Buisson [Mon, 9 Dec 2019 14:37:50 +0000 (23:37 +0900)]
LU-13064 sec: check permissions for changelogs access

root permissions should be checked when reading or clearing changelogs
from clients. In particular, if root is squashed via a nodemap entry,
it should not be allowed to access changelogs.
To achieve this send mdt body along with RQF_LLOG_ORIGIN_HANDLE_CREATE
and RQF_MDT_SET_INFO requests. And on server side, retrieve user
credentials and make sure they have root permission.

Test-Parameters: clientversion=2.12 envdefinitions=SANITY_EXCEPT="27M 56ra 151 156 802"
Test-Parameters: serverversion=2.12
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: I0c6cc99f8a7c5a13c2b31009d73f38976931ec37
Reviewed-on: https://review.whamcloud.com/36990
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Emoly Liu <emoly@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-11025 mdt: don't save remote lock if op not from client 81/37281/8
Lai Siyao [Sat, 4 Jan 2020 20:51:32 +0000 (04:51 +0800)]
LU-11025 mdt: don't save remote lock if op not from client

Some operation may not be originated from client, e.g., directory
auto split, in this case ptlrpc_request is NULL, therefore we can't
get the transaction number from request and save remote lock. This
means upon remote lock cancel this distributed transaction may not
be committed yet, that is to say, commit-on-sharing won't be triggered
if subsequent operations depend on this operation. However this won't
cause any inconsistency normally, because upon one MDT failure, this
distributed transaction can be replayed from update logs in other
MDT, and as a side effect, it avoids continuous commit in directory
auto split.

Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: If7608cab96f36480654d5d7a0f5a0f1c4dfd12b2
Reviewed-on: https://review.whamcloud.com/37281
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
3 years agoLU-11025 lod: refactor lod_mdt_alloc_qos/rr() 65/36865/12
Lai Siyao [Fri, 22 Nov 2019 11:41:36 +0000 (19:41 +0800)]
LU-11025 lod: refactor lod_mdt_alloc_qos/rr()

Add arguments 'stripe_idx' and 'stripe_count' to
lod_mdt_alloc_qos/rr(), so later directory split/merge can allocate
stripes from specified stripe index.

Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: Id054ac397fd632228fa6c2786c90e5aad9aa2eb1
Reviewed-on: https://review.whamcloud.com/36865
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13470 ptlrpc: return proper write count from ping_store 04/38304/2
Oleg Drokin [Tue, 21 Apr 2020 22:28:33 +0000 (18:28 -0400)]
LU-13470 ptlrpc: return proper write count from ping_store

If we return 0 as a measure of success, that is actually taken
by userspace as "we wrote 0 bytes, but there's no error, so
they want us to retry". So tell them we ate all their data
instead to make them happy.

Interesting that when you do shell-redirect it enters the
retry loop, but badarea_io does not.

Change-Id: Ieb0f8bcd4f010ab4375ea6f65f6ea00248a236cb
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/38304
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
3 years agoLU-10401 tests: fix error from 'tr -d=' 44/38444/2
Andreas Dilger [Thu, 30 Apr 2020 10:47:33 +0000 (04:47 -0600)]
LU-10401 tests: fix error from 'tr -d='

Fix an error from using "tr -d=" instead of "tr -d =" in
sanity test_133g.

Test-Parameters: trivial
Fixes: 83b6c6608e9 ("LU-11644 ptlrpc: show target name in req_history")
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I1bac18c7a41bc45c250d8a95ef7489d73f3ebbe5
Reviewed-on: https://review.whamcloud.com/38444
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Nunez <jnunez@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Neil Brown <neilb@suse.de>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13479 kernel: only enable integrity metadata for reads and writes 24/38324/2
Li Dongyang [Thu, 23 Apr 2020 01:16:34 +0000 (11:16 +1000)]
LU-13479 kernel: only enable integrity metadata for reads and writes

We should not enable integrity for discard bio, it will fail the
integrity allocation and the discard bio will end with EIO.

Linux-commit: e69f18f06b97ed29645d020500222bfcec2b42b2

Test-Parameters: trivial clientdistro=el7.8 serverdistro=el7.8

Change-Id: I1fc9c6c7a6c53a6287466927ecfbb9af1f2a8f27
Signed-off-by: Li Dongyang <dongyangli@ddn.com>
Reviewed-on: https://review.whamcloud.com/38324
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Li Xi <lixi@ddn.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13097 tests: set fail_loc on all MDS sanityn 43j 18/38318/2
James Nunez [Wed, 22 Apr 2020 21:14:09 +0000 (15:14 -0600)]
LU-13097 tests: set fail_loc on all MDS sanityn 43j

Set fail_loc on all MDS nodes for sanityn test 43j.

Test-Parameters: trivial testlist=sanityn env=ONLY=43j,ONLY_REPEAT=5
Signed-off-by: James Nunez <jnunez@whamcloud.com>
Change-Id: I278875ad69a8427ef2de6a7bdb94551890399abd
Reviewed-on: https://review.whamcloud.com/38318
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Sebastien Buisson <sbuisson@ddn.com>
3 years agoLU-13460 lfs: use correct obd index in print_failed_tgt() 64/38264/3
Emoly Liu [Fri, 17 Apr 2020 10:52:07 +0000 (18:52 +0800)]
LU-13460 lfs: use correct obd index in print_failed_tgt()

In function print_failed_tgt(), when calling llapi_obd_statfs(),
the correct obd index should be used according to obd type.

sanity.sh test_56rb is added to verify this patch.

Signed-off-by: Emoly Liu <emoly@whamcloud.com>
Change-Id: I443a5b388ee1c3efc8fc589c09aeec6f9b71600b
Reviewed-on: https://review.whamcloud.com/38264
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12477 ldiskfs: last cleanups 39/38139/6
James Simmons [Tue, 14 Apr 2020 15:13:57 +0000 (11:13 -0400)]
LU-12477 ldiskfs: last cleanups

The patch to cleanup ldiskfs collided with the landing of the
ext4-mballoc-prefetch patch. Remove the last unsupported rhel7
bits. With the new Ubuntu 20 coming out we can drop Ubuntu16
support. Drop 3.12 kernel versions of SUSE.

Test-Parameters: trivial
Fixes: fc87b01f96e8 ("LU-12477 ldiskfs: remove obsolete ext4 patches")
Change-Id: I15f9f59ffb1275e2eaabf7ca543fd4c4829aaf9e
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/38139
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13388 lod: unprotected access to component entries 69/38069/3
Vitaly Fertman [Wed, 25 Mar 2020 12:55:53 +0000 (15:55 +0300)]
LU-13388 lod: unprotected access to component entries

a race is possible between setattr, which may want to traverse
the component set, and the layout_change, which may change the
component set if SEL is enabled. Take an UPDATE lock on layout
write operation.

HPE-bug-id: LUS-8146
Signed-off-by: Vitaly Fertman <c17818@cray.com>
Change-Id: Idf8a5c3d423707043153892f607cdd54099d9579
Reviewed-by: Alexey Lyashkov <c17817@cray.com>
Reviewed-by: Andriy Skulysh <c17819@cray.com>
Tested-by: Elena Gryaznova <c17455@cray.com>
Reviewed-on: https://es-gerrit.dev.cray.com/156681
Reviewed-on: https://review.whamcloud.com/38069
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13352 tests: fix subtest duration for ONLY_REPEAT 72/37872/3
Andreas Dilger [Tue, 10 Mar 2020 22:00:25 +0000 (16:00 -0600)]
LU-13352 tests: fix subtest duration for ONLY_REPEAT

The subtest duration printed when the test passes was the total
elapsed time rather than the per-iteration time.  Print the
per-subtest time at the end of each iteration.

Fixes: e16e3d46ee8c ("LU-13169 tests: add ONLY_REPEAT parameter to repeat subtests")
Test-Parameters: trivial testlist=sanity env=ONLY=76,ONLY_REPEAT=10
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I0758df03ceb12c3c7c8d9cd62561d4ee7b3ebbe5
Reviewed-on: https://review.whamcloud.com/37872
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Wei Liu <sarah@whamcloud.com>
Reviewed-by: James Nunez <jnunez@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13004 lnet: remove the 'struct kvec' arg from lnd_send 45/37845/7
Mr NeilBrown [Wed, 4 Dec 2019 04:33:45 +0000 (15:33 +1100)]
LU-13004 lnet: remove the 'struct kvec' arg from lnd_send

lnd_send() is now always sent a lnet_kiov_t pointer, never a
'struct kvec' pointer.
So remove the option of 'struct kvec *'.

This means that kiblnd_setup_rd_iov() is no longer used, so it can go
too.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I121f5c8c43bd7247748d6e4913c76371e9202219
Reviewed-on: https://review.whamcloud.com/37845
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13004 lnet: remove msg_iov from lnet_msg. 44/37844/7
Mr NeilBrown [Wed, 4 Dec 2019 04:19:52 +0000 (15:19 +1100)]
LU-13004 lnet: remove msg_iov from lnet_msg.

This field is never set, so remove it and remove all uses of it.

Conversely, msg_kiov is always non-NULL, so remove code that depends
on it being NULL.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I4c5e98bd54a463ed62ea8d06b9781aa8b4e96f50
Reviewed-on: https://review.whamcloud.com/37844
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13004 lnet: discard kvec option from lnet_libmd. 43/37843/7
Mr NeilBrown [Wed, 4 Dec 2019 04:12:08 +0000 (15:12 +1100)]
LU-13004 lnet: discard kvec option from lnet_libmd.

The 'struct kvec' field in 'struct lnet_libmd' is no longer set - the
memory is always presented as pages.  So remove that option and the
union that contained iov and kiov.

Rename md_iov.kiov to md_kiov.
Discard all code that made use of md_iov.iov.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: Ic74a496c4c3df786d7fc194a1ad758c4daccd819
Reviewed-on: https://review.whamcloud.com/37843
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13004 lnet: always put a page list into struct lnet_libmd 42/37842/5
Mr NeilBrown [Tue, 17 Mar 2020 23:00:29 +0000 (10:00 +1100)]
LU-13004 lnet: always put a page list into struct lnet_libmd

'struct lnet_libmd' is only created in lnet_md_build().  It can be
given a list of pages or a virtual address.  In the latter case, the
memory will eventually be split into a list of pages.  It is cleaner
to split it into a list of pages early so that all lower levels only
need to handle one type: a page list.

Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: Iaeb4f18f7ac63986e6fed259945e8594ea1b9f25
Reviewed-on: https://review.whamcloud.com/37842
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-13301 lfs: return error when setstripe -o on inactive OSTs 51/37751/16
Emoly Liu [Fri, 10 Apr 2020 02:20:04 +0000 (10:20 +0800)]
LU-13301 lfs: return error when setstripe -o on inactive OSTs

When running "lfs setstripe" on inactive OSTs with -o option,
error code ENOTCONN returned by osp_statfs() for OST inactive
state is mistreated as MDT disconnection by the client, then the
client keeps trying to restore the connection to MDT and resend
the request again and again.
To fix this issue, the error code "ENOTCONN" is changed to other
code (EREMOTEIO) for distinction.

sanity.sh test_27cf is added to verify this patch.

Signed-off-by: Emoly Liu <emoly@whamcloud.com>
Change-Id: I9ea10b4985c769e52ee54ff22ac69948073b7709
Reviewed-on: https://review.whamcloud.com/37751
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Li Xi <lixi@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12730 tests: sync file before checking LSOM 46/37146/13
Sebastien Buisson [Mon, 6 Jan 2020 16:15:44 +0000 (01:15 +0900)]
LU-12730 tests: sync file before checking LSOM

In sanity test_807, make sure files are synced before checking
LSOM info.

Test-Parameters: trivial envdefinitions=ONLY=807 testlist=sanity,sanity,sanity,sanity
Test-Parameters: envdefinitions=ONLY=807 testlist=sanity,sanity,sanity,sanity,sanity
Test-Parameters: envdefinitions=ONLY=807 testlist=sanity,sanity,sanity,sanity,sanity
Test-Parameters: envdefinitions=ONLY=807 testlist=sanity,sanity,sanity,sanity,sanity
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: Id6a452cc6b734d706581e70fed3770973ccce503
Reviewed-on: https://review.whamcloud.com/37146
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Nunez <jnunez@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-12275 sec: add llcrypt as file encryption library 27/38127/6
Sebastien Buisson [Wed, 25 Mar 2020 16:43:33 +0000 (16:43 +0000)]
LU-12275 sec: add llcrypt as file encryption library

Include fscrypt sources from Linux 5.4 into libcfs kernel module.
All fscrypt_ prefixes have been replaced with llcrypt_ to avoid
collision. For the exact transformations carried out, please see
script contrib/scripts/fscrypt_inclusion.sh, and patches under
contrib/scripts/crypto_patches/.

This llcrypt library will be built if kernel provides minimum
encryption support, ie IS_ENCRYPTED and S_ENCRYPTED.
If kernel provides support for encryption policies v2 (included in
Linux 5.4), then llcrypt library will not be built, and in-kernel
fscrypt will be used instead.

To be independent as much as possible from the kernel, llcrypt relies
on a new 'lsi_cop' field added to struct lustre_sb_info, to point to
struct llcrypt_operations, and makes use of the new 'lsi_master_keys'
field to store file system keys. llcrypt also uses i_private field on
struct inode to store file-specific enryption info.

Test-Parameters: trivial
Test-Parameters: clientdistro=ubuntu1804 testgroup=review-ldiskfs
Test-Parameters: clientdistro=el8.1 testgroup=review-ldiskfs
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: Ide2431b0c3381214aed2e54dd3084132e9545ca8
Reviewed-on: https://review.whamcloud.com/38127
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-10391 socklnd: properly order headers in socklnd.h 87/38287/2
James Simmons [Mon, 20 Apr 2020 17:36:27 +0000 (13:36 -0400)]
LU-10391 socklnd: properly order headers in socklnd.h

We need the proper definitions in inetdevice.h for socklnd.h.
This breaks on newer platforms like Ubuntu18 with

error: implicit declaration of function ‘endfor_ifa’ [-Werror=implicit-function-declaration]

Reversing the order of the headers resolves this build issue.

Fixes: d720fbaada ("LU-10391 socklnd: use interface index to track local addr")
Change-Id: Id8fd27ca118c592b501b3d9241f87b05db3aba70
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/38287
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Neil Brown <neilb@suse.de>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
3 years agoLU-6142 fid: Fix style issues for fid_store.c 76/38276/2
Arshad Hussain [Sun, 12 Apr 2020 10:45:53 +0000 (16:15 +0530)]
LU-6142 fid: Fix style issues for fid_store.c

This patch fixes issues reported by checkpatch
for file lustre/fid/fid_store.c

Test-Parameters: trivial
Signed-off-by: Arshad Hussain <arshad.super@gmail.com>
Change-Id: I66c039e18963d2596f681a89c7ea1f30967d8879
Reviewed-on: https://review.whamcloud.com/38276
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Petros Koutoupis <petros.koutoupis@hpe.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
3 years agoLU-6142 fid: Fix style issues for fid_request.c 70/38270/3
Arshad Hussain [Sun, 12 Apr 2020 08:53:51 +0000 (14:23 +0530)]
LU-6142 fid: Fix style issues for fid_request.c

This patch fixes issues reported by checkpatch
for file lustre/fid/fid_request.c

Test-Parameters: trivial
Signed-off-by: Arshad Hussain <arshad.super@gmail.com>
Change-Id: I4530180cefc3f8677ca66a0ada7150a5dbfb1520
Reviewed-on: https://review.whamcloud.com/38270
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Petros Koutoupis <petros.koutoupis@hpe.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
3 years agoLU-6142 build: match lnet comment style to linux net layer 23/38223/4
James Simmons [Tue, 14 Apr 2020 18:31:14 +0000 (14:31 -0400)]
LU-6142 build: match lnet comment style to linux net layer

The network layer of the linux kernel has a comment style of

/* and in the future LNet will be placed in the Linux network
 * subsystem which means this comment format will be required.
 */

Test-Parameters: trivial
Change-Id: Ia3584662954c529b4fb72ab4515f3888d8d64072
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/38223
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Arshad Hussain <arshad.super@gmail.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>