Re: [lustre-discuss] Cannot mount MDT after upgrading from Lustre 2.12.6 to 2.15.3

2023-10-01 Thread Andreas Dilger via lustre-discuss
On Oct 1, 2023, at 00:36, Tung-Han Hsieh via lustre-discuss 
 wrote:
> I should apologize for replying late. Here I would like to clarify why in my 
> opinion the Lustre ldiskfs code is not self-contained.
> 
> In the past, to compile lustre with ldiskfs, we needed to patch Linux kernel 
> using the patches provided by Lustre source code. And YES, for the recent 
> Lustre versions, the necessary patches are fewer, and even OK without 
> applying any patches to Linux kernel.  However, there are another patches to 
> Lustre ldiskfs code, namely copying Linux kernel ext4fs code into Lustre 
> source tree, applying patches provided by Lustre, and make it becomes the 
> ldiskfs code, during the compile time.

Hello T.H.,
it is true that Lustre needs to patch the ldiskfs code in order to properly 
integrate with the ext4/jbd2 transaction handling, and to add some features 
that ext4 is lacking that Lustre depends on.  Ideally we could get these 
features integrated into the upstream ext4 code to avoid the need to patch it, 
or at least minimize the number of patches, but that is often difficult and 
time consuming and doesn't get done as often as anyone would want it to.

Lustre is an open-source project, and if you are depending on the Linux-5.4 
stable kernel branch for your servers, it would be welcome for you to submit 
patches to update the kernel patch series if there are issues arising with 
these patches with a new stable kernel, as other developers maintain the kernel 
patch series for the distros that they are interested in (primarily RHEL 
derivatives, but more recently Ubuntu).  

> Here is the compilation log indicating the patching procedure. To compile 
> lustre-2.15.3 with Linux-5.4.135, after running
> 
> ./configure --prefix=/opt/lustre --with-linux=/usr/src/linux-5.4.135 
> --with-o2ib=no --with-ldiskfsprogs=/opt/e2fs --enable-mpitests=no 
> 
> and then run "make". The log reads:
> 
> 
> rm -rf linux-stage linux sources trace
> mkdir -p linux-stage/fs/ext4 linux-stage/include/linux \
>  linux-stage/include/trace/events
> cp /usr/src/linux-5.4.135/fs/ext4/file.c 
> /usr/src/linux-5.4.135/fs/ext4/ioctl.c /usr/src/linux-5.4.135/fs/ext4/dir.c 
>  linux-stage/fs/ext4
> if test -n "" ; then \
> cp  linux-stage/include/linux; \
> fi
> if test -n "/usr/src/linux-5.4.135/include/trace/events/ext4.h" ; then \
> cp /usr/src/linux-5.4.135/include/trace/events/ext4.h 
> linux-stage/include/trace/events; \
> fi
> ln -s ../../ldiskfs/kernel_patches/patches linux-stage/patches
> ln -s ../../ldiskfs/kernel_patches/series/ldiskfs-5.4.136-ml.series 
> linux-stage/
> series
> cd linux-stage && quilt push -a -q
> Applying patch patches/rhel8/ext4-inode-version.patch
> Applying patch patches/linux-5.4/ext4-lookup-dotdot.patch
> Applying patch patches/suse15/ext4-print-inum-in-htree-warning.patch
> Applying patch patches/rhel8/ext4-prealloc.patch
> Applying patch patches/ubuntu18/ext4-osd-iop-common.patch
> Applying patch patches/ubuntu19/ext4-misc.patch
> Applying patch patches/rhel8/ext4-mballoc-extra-checks.patch
> Applying patch patches/linux-5.4/ext4-hash-indexed-dir-dotdot-update.patch
> Applying patch patches/linux-5.4/ext4-kill-dx-root.patch
> Applying patch patches/rhel7.6/ext4-mballoc-pa-free-mismatch.patch
> Applying patch patches/linux-5.4/ext4-data-in-dirent.patch
> Applying patch patches/rhel8/ext4-nocmtime.patch
> Applying patch patches/base/ext4-htree-lock.patch
> Applying patch patches/linux-5.4/ext4-pdirop.patch
> Applying patch patches/rhel8/ext4-max-dir-size.patch
> Applying patch 
> patches/rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
> Applying patch 
> patches/linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
> Applying patch patches/ubuntu18/ext4-jcb-optimization.patch
> Applying patch patches/linux-5.4/ext4-attach-jinode-in-writepages.patch
> Applying patch patches/rhel8/ext4-dont-check-before-replay.patch
> Applying patch 
> patches/rhel7.6/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
> Applying patch patches/rhel7.6/ext4-export-orphan-add.patch
> Applying patch patches/rhel8/ext4-export-mb-stream-allocator-variables.patch
> Applying patch patches/ubuntu19/ext4-iget-with-flags.patch
> Applying patch patches/linux-5.4/export-ext4fs-dirhash-helper.patch
> Applying patch patches/linux-5.4/ext4-misc.patch
> Applying patch patches/linux-5.4/ext4-simple-blockalloc.patch
> Applying patch patches/linux-5.4/ext4-xattr-disable-credits-check.patch
> Applying patch patches/base/ext4-no-max-dir-size-limit-for-iam-objects.patch
> Applying patch patches/rhel8/ext4-ialloc-uid-gid-and-pass-owner-down.patch
> Applying patch patches/base/ext4-projid-xattrs.patch
> Applying patch patches/linux-5.4/ext4-enc-flag.patch
> Applying patch patches/base/ext4-delayed-iput.patch
> Now at patch patches/base/ext4-delayed-iput.patch
> 

Re: [lustre-discuss] Adding lustre clients into the Debian

2023-10-01 Thread Andreas Dilger via lustre-discuss
On Oct 1, 2023, at 05:54, Arman Khalatyan via lustre-discuss 
 wrote:
> 
> Hello everyone,
> 
> We are in the process of integrating the Lustre client into Debian. Are there 
> any legal concerns or significant obstacles to this? We're curious why it 
> hasn't been included in the official Debian repository so far. There used to 
> be an old, unmaintained Lustre client branch dating back to around 2013.

I don't think there is any particular barrier to add a Debian Lustre package 
today.  As you wrote, there was some effort put into that in the past, but I 
think there wasn't someone with the time and Debian-specific experience 
maintain it and get it included into a release.  Lustre is GPLv2 licensed, with 
some LGPL user library API code, so there aren't any legal issues.

The Lustre CI system builds Ubuntu clients, and I'd be happy to see patches to 
improve the Debian packaging in the Lustre tree.  Most Lustre users are using 
RHEL derivatives, and secondarily Ubuntu, so there hasn't been anyone to work 
on specific Debian packaging in some time.  Thomas (CC'd) was most active on 
the Debian front, and might be able to comment on this in more detail, and 
hopefully can also help review the patches.

> You can check our wishlist on Debian here: https://bugs.debian.org/1053214
> 
> At AIP, one of our colleagues is responsible for maintaining Astropy, so we 
> have some experience with Debian.
> 
> I've also set up a CI system in our GitLab, which includes a simple build and 
> push to a public S3 bucket. This is primarily for testing purposes to see if 
> it functions correctly for others...

There is an automated build farm for Lustre, with patches submitted via Gerrit 
(https://wiki.lustre.org/Using_Gerrit), and while there aren't Debian 
build/test nodes to test the correctness of changes for Debian, this will at 
least avoid regressions with Ubuntu or, though unlikely, with RHEL.  My 
assumption would be that any Debian-specific changes would continue to work 
with Ubuntu?

Depending on how actively you want to build/test Lustre, it is also possible to 
configure your CI system to asynchronously follow patches under development in 
Gerrit to provide build and/or test feedback on the patches before they land.  
The contrib/scripts/gerrit_checkpatch.py script follows new patch submissions 
and runs code style reviews on patches after they are pushed, and posts 
comments back to Gerrit.

A step beyond this, once your CI system is working reliably, it is possible to 
also post review comments directly into the patches in Gerrit, as the Gerrit 
Janitor does (https://github.com/verygreen/lustretester/).  The 
gerrit_build-and-test-new.py script is derived from gerrit_checkpatch.py, but 
implements a more complex set of operations on each patch - static code 
analysis, build, test.  It will add both general patch comments on 
success/failure of the build/test, or comments on specific lines in the patch.  
In some cases, Gerrit Janitor will also give negative code reviews in cases 
when a newly-added regression test added by a patch is failing regularly in its 
testing.

Cheers, Andreas
--
Andreas Dilger
Lustre Principal Architect
Whamcloud


___
lustre-discuss mailing list
lustre-discuss@lists.lustre.org
http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org


Re: [lustre-discuss] Adding lustre clients into the Debian

2023-10-01 Thread Andreas Dilger via lustre-discuss
On Oct 1, 2023, at 05:54, Arman Khalatyan via lustre-discuss 
mailto:lustre-discuss@lists.lustre.org>> wrote:

Hello everyone,

We are in the process of integrating the Lustre client into Debian. Are there 
any legal concerns or significant obstacles to this? We're curious why it 
hasn't been included in the official Debian repository so far. There used to be 
an old, unmaintained Lustre client branch dating back to around 2013.

I don't think there is any particular barrier to add a Debian Lustre package 
today.  As you wrote, there was some effort put into that in the past, but I 
think there wasn't someone with the time and Debian-specific experience 
maintain it and get it included into a release.  Lustre is GPLv2 licensed, with 
some LGPL user library API code, so there aren't any legal issues.

The Lustre CI system builds Ubuntu clients, and I'd be happy to see patches to 
improve the Debian packaging in the Lustre tree.  Most Lustre users are using 
RHEL derivatives, and secondarily Ubuntu, so there hasn't been anyone to work 
on specific Debian packaging in some time.  Thomas (CC'd) was most active on 
the Debian front, and might be able to comment on this in more detail, and 
hopefully can also help review the patches.

You can check our wishlist on Debian here: https://bugs.debian.org/1053214

At AIP, one of our colleagues is responsible for maintaining Astropy, so we 
have some experience with Debian.

I've also set up a CI system in our GitLab, which includes a simple build and 
push to a public S3 bucket. This is primarily for testing purposes to see if it 
functions correctly for others...

There is an automated build farm for Lustre, with patches submitted via Gerrit 
(https://wiki.lustre.org/Using_Gerrit), and while there aren't Debian 
build/test nodes to test the correctness of changes for Debian, this will at 
least avoid regressions with Ubuntu or, though unlikely, with RHEL.  My 
assumption would be that any Debian-specific changes would continue to work 
with Ubuntu?

Depending on how actively you want to build/test Lustre, it is also possible to 
configure your CI system to asynchronously follow patches under development in 
Gerrit to provide build and/or test feedback on the patches before they land.  
The contrib/scripts/gerrit_checkpatch.py script follows new patch submissions 
and runs code style reviews on patches after they are pushed, and posts 
comments back to Gerrit.

A step beyond this, once your CI system is working reliably, it is possible to 
also post review comments directly into the patches in Gerrit, as the Gerrit 
Janitor does (https://github.com/verygreen/lustretester/).  The 
gerrit_build-and-test-new.py script is derived from gerrit_checkpatch.py, but 
implements a more complex set of operations on each patch - static code 
analysis, build, test.  It will add both general patch comments on 
success/failure of the build/test, or comments on specific lines in the patch.  
In some cases, Gerrit Janitor will also give negative code reviews in cases 
when a newly-added regression test added by a patch is failing regularly in its 
testing.

Cheers, Andreas
--
Andreas Dilger
Lustre Principal Architect
Whamcloud







___
lustre-discuss mailing list
lustre-discuss@lists.lustre.org
http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org


[lustre-discuss] Adding lustre clients into the Debian

2023-10-01 Thread Arman Khalatyan via lustre-discuss
Hello everyone,

We are in the process of integrating the Lustre client into Debian. Are
there any legal concerns or significant obstacles to this? We're curious
why it hasn't been included in the official Debian repository so far. There
used to be an old, unmaintained Lustre client branch dating back to around
2013.

You can check our wishlist on Debian here: https://bugs.debian.org/1053214

At AIP, one of our colleagues is responsible for maintaining Astropy, so we
have some experience with Debian.

I've also set up a CI system in our GitLab, which includes a simple build
and push to a public S3 bucket. This is primarily for testing purposes to
see if it functions correctly for others...

Greetings from Potsdam,
Arman

-- 
**
* Dr. Arman Khalatyan  IT-eScience -SuperComputing   *
*  Phone : +49-331-7499-528  *
* Email : akhalat...@aip.deFAX   : +49-331-7499-309  *
**
**
* Leibniz-Institut für Astrophysik Potsdam (AIP) *
* An der Sternwarte 16, 14482 Potsdam, Germany   *
**
* Vorstand: Prof. Dr. Matthias Steinmetz, Wolfram Rosenbach  *
* Stiftung bürgerlichen Rechts   *
* Stiftungsverzeichnis Brandenburg: 26 742-00/7026   *
**
___
lustre-discuss mailing list
lustre-discuss@lists.lustre.org
http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org


Re: [lustre-discuss] Cannot mount MDT after upgrading from Lustre 2.12.6 to 2.15.3

2023-10-01 Thread Tung-Han Hsieh via lustre-discuss
Dear All,

I should apologize for replying late. Here I would like to clarify why in
my opinion the Lustre ldiskfs code is not self-contained.

In the past, to compile lustre with ldiskfs, we needed to patch Linux
kernel using the patches provided by Lustre source code. And YES, for the
recent Lustre versions, the necessary patches are fewer, and even OK
without applying any patches to Linux kernel.  However, there are another
patches to Lustre ldiskfs code, namely copying Linux kernel ext4fs code
into Lustre source tree, applying patches provided by Lustre, and make it
becomes the ldiskfs code, during the compile time.

Here is the compilation log indicating the patching procedure. To compile
lustre-2.15.3 with Linux-5.4.135, after running

./configure --prefix=/opt/lustre --with-linux=/usr/src/linux-5.4.135
--with-o2ib=no --with-ldiskfsprogs=/opt/e2fs --enable-mpitests=no

and then run "make". The log reads:


rm -rf linux-stage linux sources trace
mkdir -p linux-stage/fs/ext4 linux-stage/include/linux \
 linux-stage/include/trace/events
cp /usr/src/linux-5.4.135/fs/ext4/file.c
/usr/src/linux-5.4.135/fs/ext4/ioctl.c /usr/src/linux-5.4.135/fs/ext4/dir.c
 linux-stage/fs/ext4
if test -n "" ; then \
cp  linux-stage/include/linux; \
fi
if test -n "/usr/src/linux-5.4.135/include/trace/events/ext4.h" ; then \
cp /usr/src/linux-5.4.135/include/trace/events/ext4.h
linux-stage/include/trace/events; \
fi
ln -s ../../ldiskfs/kernel_patches/patches linux-stage/patches
ln -s ../../ldiskfs/kernel_patches/series/ldiskfs-5.4.136-ml.series
linux-stage/
series
cd linux-stage && quilt push -a -q
Applying patch patches/rhel8/ext4-inode-version.patch
Applying patch patches/linux-5.4/ext4-lookup-dotdot.patch
Applying patch patches/suse15/ext4-print-inum-in-htree-warning.patch
Applying patch patches/rhel8/ext4-prealloc.patch
Applying patch patches/ubuntu18/ext4-osd-iop-common.patch
Applying patch patches/ubuntu19/ext4-misc.patch
Applying patch patches/rhel8/ext4-mballoc-extra-checks.patch
Applying patch patches/linux-5.4/ext4-hash-indexed-dir-dotdot-update.patch
Applying patch patches/linux-5.4/ext4-kill-dx-root.patch
Applying patch patches/rhel7.6/ext4-mballoc-pa-free-mismatch.patch
Applying patch patches/linux-5.4/ext4-data-in-dirent.patch
Applying patch patches/rhel8/ext4-nocmtime.patch
Applying patch patches/base/ext4-htree-lock.patch
Applying patch patches/linux-5.4/ext4-pdirop.patch
Applying patch patches/rhel8/ext4-max-dir-size.patch
Applying patch
patches/rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
Applying patch
patches/linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
Applying patch patches/ubuntu18/ext4-jcb-optimization.patch
Applying patch patches/linux-5.4/ext4-attach-jinode-in-writepages.patch
Applying patch patches/rhel8/ext4-dont-check-before-replay.patch
Applying patch
patches/rhel7.6/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
Applying patch patches/rhel7.6/ext4-export-orphan-add.patch
Applying patch patches/rhel8/ext4-export-mb-stream-allocator-variables.patch
Applying patch patches/ubuntu19/ext4-iget-with-flags.patch
Applying patch patches/linux-5.4/export-ext4fs-dirhash-helper.patch
Applying patch patches/linux-5.4/ext4-misc.patch
Applying patch patches/linux-5.4/ext4-simple-blockalloc.patch
Applying patch patches/linux-5.4/ext4-xattr-disable-credits-check.patch
Applying patch patches/base/ext4-no-max-dir-size-limit-for-iam-objects.patch
Applying patch patches/rhel8/ext4-ialloc-uid-gid-and-pass-owner-down.patch
Applying patch patches/base/ext4-projid-xattrs.patch
Applying patch patches/linux-5.4/ext4-enc-flag.patch
Applying patch patches/base/ext4-delayed-iput.patch
Now at patch patches/base/ext4-delayed-iput.patch


If you check the Lustre source code, before running "make", the directory
"Lustre-2.15.3/ldiskfs/linux-stage" does not exist. After running "make",
it was created by the above patching procedure.

Look into the Lustre codes further, there is a directory providing the
patches to create ldiskfs code:

lustre-2.15.3/ldiskfs/kernel_patches/series

Obviously these patches highly depend on the version of Linux kernel. We
have to balance the requirement to drive our hardware, the long-term
maintained Linux kernel (see https://www.kernel.org/), and the
compatibility with Lustre. For now, we are lucky to find vanilla
Linux-5.4.135 fulfilling the above requirements. In case that Linux-5.4.135
has bugs in driving our fiber storage device, and we have to change to,
say, Linux-5.4.150 or later, then we will get into trouble. This rare
situation did happen before.

So it would be very appreciated if, in the future release, the ldiskfs code
could be a self-contained code similar to ZFS, instead of copying from
Linux kernel and applying patches to