LU-4877 mdt: tolerate zero md_packed in mdt_fix_reply

The assertion for md_packed value is not really needed there,
if it is zero then buffer is not packed in reply and is not
needed, it is enough just unmark big buffer usage.

Signed-off-by: Mikhail Pershin <mike.pershin@intel.com>
Change-Id: I4db92ce2ef492069db4dbd4d07c0d69770130fad
Reviewed-on: http://review.whamcloud.com/10116
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: wangdi <di.wang@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
LU-4924 llite: Only kill SGID/SUID bits

Check that attr mode is valid before using it when determining if to
clear SGID and SUID bits in ll_setattr.
Add regression test.

Signed-off-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Change-Id: Ic452590a6fb59010f1ee6b8b0b790557a2540d8c
Reviewed-on: http://review.whamcloud.com/10153
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
LU-4987 lustre: Remove static declaration in anonymous union

It is not permitted in C++ to have a static declaration inside
of an anonymous union.  Before "LUSTRE_ANONYMOUS_UNION_NAME"
was added to the code in commit b40f6327bb19b6, the g++ compiler
most likely complained with an error like this:

  error: ‘struct ost_id::<anonymous union>::ostid’ invalid; an
  anonymous union can only have non-static data members [-fpermissive]

The fix from b40f6327bb19b6 conditionally eliminated the anonymous
union when a C++ compiler is being used.  That means that the API
varies depending on your choice of compiler, which is not at all
desirable.

The better fix is to address the static data member that the error
complained about.  This patch changes the code to use an unnamed
struct in place of "struct ostid" inside of the anonymous union.
That name declaration was completely unnecessary anyway, since it
was not used anywhere else.

Change-Id: I59f8341f5f9833d8a144cf2feaa178cb76e643dc
Signed-off-by: Christopher J. Morrone <morrone2@llnl.gov>
Reviewed-on: http://review.whamcloud.com/10176
Reviewed-by: Robert Read <robert.read@intel.com>
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
LU-4953 lprocfs: fix missing target_obds on multiple mounts

In the case of multiple mountes the target_obds only showed
up for the first mount. The reason for this was that we were
using procsym in obd_type to hold the pointer to the
proc_dir_entry for target_obds. But obd_type is shared across
all lmv/lov object instances. Instead we need to cache the
proc_dir_entry in the private data structure; lov_obd and
lmv_obd; for each type of obd device impacted. Later these
handles will be used for cleanup when the module unloads.

Change-Id: Idf7a78f9ca662af78c217bb1142409b9b0322192
Signed-off-by: James Simmons <uja.ornl@gmail.com>
Reviewed-on: http://review.whamcloud.com/10192
Reviewed-by: Yang Sheng <yang.sheng@intel.com>
Tested-by: Jenkins
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
LU-5014 osd-ldiskfs: vfs_unlink api changed

In newer kernels the vfs_unlink api changed to take
more arguments.  This patch creates a wrapper to let us adapt
to the different versions of vfs_unlink in old and new kernels.
As vfs_unlink is only used in server code
this only impacts server builds of lustre.

Signed-off-by: Bob Glossman <bob.glossman@intel.com>
Change-Id: I3aa9a305530f74ee010fa5173527a37e048a9ef8
Reviewed-on: http://review.whamcloud.com/10235
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: James Simmons <uja.ornl@gmail.com>
Reviewed-by: Yang Sheng <yang.sheng@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>