<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git/libglusterfs/src/inode.c, branch v6.0rc1</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/'/>
<entry>
<title>fix 32-bit-build-smoke warnings</title>
<updated>2019-01-11T18:25:18+00:00</updated>
<author>
<name>Iraj Jamali</name>
<email>ijamali@redhat.com</email>
</author>
<published>2018-12-17T05:53:59+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=01779e6c6c2c876a9e137d51ee1ce6a8062ea893'/>
<id>01779e6c6c2c876a9e137d51ee1ce6a8062ea893</id>
<content type='text'>
fixes: bz#1622665

Change-Id: I777d67b1b62c284c62a02277238ad7538eef001e
Signed-off-by: Iraj Jamali &lt;ijamali@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fixes: bz#1622665

Change-Id: I777d67b1b62c284c62a02277238ad7538eef001e
Signed-off-by: Iraj Jamali &lt;ijamali@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fuse: add --lru-limit option</title>
<updated>2018-12-14T17:34:28+00:00</updated>
<author>
<name>Amar Tumballi</name>
<email>amarts@redhat.com</email>
</author>
<published>2018-10-16T11:01:49+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=d49b41e817d592c1904b6f01716df6546dad3ebe'/>
<id>d49b41e817d592c1904b6f01716df6546dad3ebe</id>
<content type='text'>
The inode LRU mechanism is moot in fuse xlator (ie. there is no
limit for the LRU list), as fuse inodes are referenced from
kernel context, and thus they can only be dropped on request of
the kernel. This might results in a high number of passive
inodes which are useless for the glusterfs client, causing a
significant memory overhead.

This change tries to remedy this by extending the LRU semantics
and allowing to set a finite limit on the fuse inode LRU.

A brief history of problem:

When gluster's inode table was designed, fuse didn't have any
'invalidate' method, which means, userspace application could
never ask kernel to send a 'forget()' fop, instead had to wait
for kernel to send it based on kernel's parameters. Inode table
remembers the number of times kernel has cached the inode based
on the 'nlookup' parameter. And 'nlookup' field is not used by
no other entry points (like server-protocol, gfapi etc).

Hence the inode_table of fuse module always has to have lru-limit
as '0', which means no limit. GlusterFS always had to keep all
inodes in memory as kernel would have had a reference to it.
Again, the reason for this is, kernel's glusterfs inode reference
was pointer of 'inode_t' structure in glusterfs. As it is a
pointer, we could never free it (to prevent segfault, or memory
corruption).

Solution:

In the inode table, handle the prune case of inodes with 'nlookup'
differently, and call a 'invalidator' method, which in this case is
fuse_invalidate(), and it sends the request to kernel for getting
the forget request.

When the kernel sends the forget, it means, it has dropped all
the reference to the inode, and it will send the forget with the
'nlookup' parameter too. We just need to make sure to reduce the
'nlookup' value we have when we get forget. That automatically
cause the relevant prune to happen.

Credits: Csaba Henk, Xavier Hernandez, Raghavendra Gowdappa, Nithya B

fixes: bz#1560969
Change-Id: Ifee0737b23b12b1426c224ec5b8f591f487d83a2
Signed-off-by: Amar Tumballi &lt;amarts@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The inode LRU mechanism is moot in fuse xlator (ie. there is no
limit for the LRU list), as fuse inodes are referenced from
kernel context, and thus they can only be dropped on request of
the kernel. This might results in a high number of passive
inodes which are useless for the glusterfs client, causing a
significant memory overhead.

This change tries to remedy this by extending the LRU semantics
and allowing to set a finite limit on the fuse inode LRU.

A brief history of problem:

When gluster's inode table was designed, fuse didn't have any
'invalidate' method, which means, userspace application could
never ask kernel to send a 'forget()' fop, instead had to wait
for kernel to send it based on kernel's parameters. Inode table
remembers the number of times kernel has cached the inode based
on the 'nlookup' parameter. And 'nlookup' field is not used by
no other entry points (like server-protocol, gfapi etc).

Hence the inode_table of fuse module always has to have lru-limit
as '0', which means no limit. GlusterFS always had to keep all
inodes in memory as kernel would have had a reference to it.
Again, the reason for this is, kernel's glusterfs inode reference
was pointer of 'inode_t' structure in glusterfs. As it is a
pointer, we could never free it (to prevent segfault, or memory
corruption).

Solution:

In the inode table, handle the prune case of inodes with 'nlookup'
differently, and call a 'invalidator' method, which in this case is
fuse_invalidate(), and it sends the request to kernel for getting
the forget request.

When the kernel sends the forget, it means, it has dropped all
the reference to the inode, and it will send the forget with the
'nlookup' parameter too. We just need to make sure to reduce the
'nlookup' value we have when we get forget. That automatically
cause the relevant prune to happen.

Credits: Csaba Henk, Xavier Hernandez, Raghavendra Gowdappa, Nithya B

fixes: bz#1560969
Change-Id: Ifee0737b23b12b1426c224ec5b8f591f487d83a2
Signed-off-by: Amar Tumballi &lt;amarts@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfs: Move devel headers under glusterfs directory</title>
<updated>2018-12-05T21:47:04+00:00</updated>
<author>
<name>ShyamsundarR</name>
<email>srangana@redhat.com</email>
</author>
<published>2018-11-29T19:08:06+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=20ef211cfa5b5fcc437484a879fdc5d4c66bbaf5'/>
<id>20ef211cfa5b5fcc437484a879fdc5d4c66bbaf5</id>
<content type='text'>
libglusterfs devel package headers are referenced in code using
include semantics for a program, this while it works can be better
especially when dealing with out of tree xlator builds or in
general out of tree devel package usage.

Towards this, the following changes are done,
- moved all devel headers under a glusterfs directory
- Included these headers using system header notation &lt;&gt; in all
code outside of libglusterfs
- Included these headers using own program notation "" within
libglusterfs

This change although big, is just moving around the headers and
making it correct when including these headers from other sources.

This helps us correctly include libglusterfs includes without
namespace conflicts.

Change-Id: Id2a98854e671a7ee5d73be44da5ba1a74252423b
Updates: bz#1193929
Signed-off-by: ShyamsundarR &lt;srangana@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
libglusterfs devel package headers are referenced in code using
include semantics for a program, this while it works can be better
especially when dealing with out of tree xlator builds or in
general out of tree devel package usage.

Towards this, the following changes are done,
- moved all devel headers under a glusterfs directory
- Included these headers using system header notation &lt;&gt; in all
code outside of libglusterfs
- Included these headers using own program notation "" within
libglusterfs

This change although big, is just moving around the headers and
making it correct when including these headers from other sources.

This helps us correctly include libglusterfs includes without
namespace conflicts.

Change-Id: Id2a98854e671a7ee5d73be44da5ba1a74252423b
Updates: bz#1193929
Signed-off-by: ShyamsundarR &lt;srangana@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>core: fix strncpy warnings</title>
<updated>2018-11-15T05:05:34+00:00</updated>
<author>
<name>Kaleb S. KEITHLE</name>
<email>kkeithle@redhat.com</email>
</author>
<published>2018-11-09T16:27:11+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=76906af9d70fc784de728a70e3dbda62dece5e10'/>
<id>76906af9d70fc784de728a70e3dbda62dece5e10</id>
<content type='text'>
Since gcc-8.2.x (fedora-28 or so) gcc has been emitting warnings
about buggy use of strncpy.

e.g.
  warning: ‘strncpy’ output truncated before terminating nul
  copying as many bytes from a string as its length
and
  warning: ‘strncpy’ specified bound depends on the length of the
  source argument

Since we're copying string fragments and explicitly null terminating
use memcpy to silence the warning

Change-Id: I413d84b5f4157f15c99e9af3e154ce594d5bcdc1
updates: bz#1193929
Signed-off-by: Kaleb S. KEITHLEY &lt;kkeithle@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since gcc-8.2.x (fedora-28 or so) gcc has been emitting warnings
about buggy use of strncpy.

e.g.
  warning: ‘strncpy’ output truncated before terminating nul
  copying as many bytes from a string as its length
and
  warning: ‘strncpy’ specified bound depends on the length of the
  source argument

Since we're copying string fragments and explicitly null terminating
use memcpy to silence the warning

Change-Id: I413d84b5f4157f15c99e9af3e154ce594d5bcdc1
updates: bz#1193929
Signed-off-by: Kaleb S. KEITHLEY &lt;kkeithle@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfs multiple files: remove dead initilization</title>
<updated>2018-11-11T16:06:29+00:00</updated>
<author>
<name>Yaniv Kaul</name>
<email>ykaul@redhat.com</email>
</author>
<published>2018-10-21T00:55:04+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=cac2dba48bf8029b2b0421850fcc4598e33569f6'/>
<id>cac2dba48bf8029b2b0421850fcc4598e33569f6</id>
<content type='text'>
Per newer GCC releases and clang-scan, some trivial
dead initialization (values that were set but were never
read) were removed.

Compile-tested only!

updates: bz#1193929
Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: Ia9959b2ff87d2e9cb46864e68ffe7dccb984db34
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Per newer GCC releases and clang-scan, some trivial
dead initialization (values that were set but were never
read) were removed.

Compile-tested only!

updates: bz#1193929
Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: Ia9959b2ff87d2e9cb46864e68ffe7dccb984db34
</pre>
</div>
</content>
</entry>
<entry>
<title>all: fix the format string exceptions</title>
<updated>2018-11-05T18:50:59+00:00</updated>
<author>
<name>Amar Tumballi</name>
<email>amarts@redhat.com</email>
</author>
<published>2018-11-01T01:55:25+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=74e8328d3f6901d6ba38a313965fe910c8411324'/>
<id>74e8328d3f6901d6ba38a313965fe910c8411324</id>
<content type='text'>
Currently, there are possibilities in few places, where a user-controlled
(like filename, program parameter etc) string can be passed as 'fmt' for
printf(), which can lead to segfault, if the user's string contains '%s',
'%d' in it.

While fixing it, makes sense to make the explicit check for such issues
across the codebase, by making the format call properly.

Fixes: CVE-2018-14661

Fixes: bz#1644763
Change-Id: Ib547293f2d9eb618594cbff0df3b9c800e88bde4
Signed-off-by: Amar Tumballi &lt;amarts@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, there are possibilities in few places, where a user-controlled
(like filename, program parameter etc) string can be passed as 'fmt' for
printf(), which can lead to segfault, if the user's string contains '%s',
'%d' in it.

While fixing it, makes sense to make the explicit check for such issues
across the codebase, by making the format call properly.

Fixes: CVE-2018-14661

Fixes: bz#1644763
Change-Id: Ib547293f2d9eb618594cbff0df3b9c800e88bde4
Signed-off-by: Amar Tumballi &lt;amarts@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>core: Use GF_ATOMIC ops to update inode-&gt;nlookup</title>
<updated>2018-10-30T07:08:37+00:00</updated>
<author>
<name>Mohit Agrawal</name>
<email>moagrawal@redhat.com</email>
</author>
<published>2018-10-30T07:05:59+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=6cc573631df28eb357ffb006d1dbfe1bfd60aeba'/>
<id>6cc573631df28eb357ffb006d1dbfe1bfd60aeba</id>
<content type='text'>
fixes: bz#1644164

Change-Id: I0ac5aff565b3a30d5ff25ec5a3f20e0bda424a5d
Signed-off-by: Mohit Agrawal &lt;moagrawal@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fixes: bz#1644164

Change-Id: I0ac5aff565b3a30d5ff25ec5a3f20e0bda424a5d
Signed-off-by: Mohit Agrawal &lt;moagrawal@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfs: NULL pointer dereferencing clang fix</title>
<updated>2018-09-19T15:06:17+00:00</updated>
<author>
<name>Iraj Jamali</name>
<email>ijamali@redhat.com</email>
</author>
<published>2018-09-18T10:10:45+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=ed071577e426744c08600f50e52cbf766c27868c'/>
<id>ed071577e426744c08600f50e52cbf766c27868c</id>
<content type='text'>
Problem: trav could be NULL.

Solution: Adding a check to avoid clang error.

Updates: bz#1622665

Change-Id: If26be82edea5e33c2356cea3769496f1cbd3774c
Signed-off-by: Iraj Jamali &lt;ijamali@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: trav could be NULL.

Solution: Adding a check to avoid clang error.

Updates: bz#1622665

Change-Id: If26be82edea5e33c2356cea3769496f1cbd3774c
Signed-off-by: Iraj Jamali &lt;ijamali@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Land part 2 of clang-format changes</title>
<updated>2018-09-12T12:22:45+00:00</updated>
<author>
<name>Gluster Ant</name>
<email>bugzilla-bot@gluster.org</email>
</author>
<published>2018-09-12T12:22:45+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=e16868dede6455cab644805af6fe1ac312775e13'/>
<id>e16868dede6455cab644805af6fe1ac312775e13</id>
<content type='text'>
Change-Id: Ia84cc24c8924e6d22d02ac15f611c10e26db99b4
Signed-off-by: Nigel Babu &lt;nigelb@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: Ia84cc24c8924e6d22d02ac15f611c10e26db99b4
Signed-off-by: Nigel Babu &lt;nigelb@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>multiple files: remove unndeeded memset()</title>
<updated>2018-08-29T17:31:11+00:00</updated>
<author>
<name>Yaniv Kaul</name>
<email>ykaul@redhat.com</email>
</author>
<published>2018-08-24T17:59:30+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=cbe133c832fd9907619a1231aa3d9dda1330ae74'/>
<id>cbe133c832fd9907619a1231aa3d9dda1330ae74</id>
<content type='text'>
This is a squash of multiple commits:

contrib/fuse-lib/misc.c: remove unneeded memset()

All flock variables are properly set, no need to memset it.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I8e0512c5a88daadb0e587f545fdb9b32ca8858a2

libglusterfs/src/{client_t|fd|inode|stack}.c: remove some memset()

I don't think there's a need for any of them.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I2be9ccc3a5cb5da51a92af73488cdabd1c527f59

libglusterfs/src/xlator.c: remove unneeded memset()

All xl-&gt;mem_acct members are properly set,
no need to memset it.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I7f264cd47e7a06255a3f3943c583de77ae8e3147

xlators/cluster/afr/src/afr-self-heal-common.c: remove unneeded memset()

Since we are going over the whole array anyway, initialize it
properly, to either 1 or 0.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: Ied4210388976b6a7a2e91cc3de334534d6fef201

xlators/cluster/dht/src/dht-common.c: remove unneeded memset()

Since we are going over the whole array anyway it is initialized
properly.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: Idc436d2bd0563b6582908d7cbebf9dbc66a42c9a

xlators/cluster/ec/src/ec-helpers.c: remove unneeded memset()

Since we are going over the whole array anyway it is initialized
properly.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I81bf971f7fcecb4599e807d37f426f55711978fa

xlators/mgmt/glusterd/src/glusterd-volgen.c: remove some memset()

I don't think there's a need for any of them.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I476ea59ba53546b5153c269692cd5383da81ce2d

xlators/mgmt/glusterd/src/glusterd-geo-rep.c: read() in 4K blocks

The current 1K seems small. 4K is usually better (in Linux).

Also remove a memset() that I don't think is needed between reads.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I5fb7950c92d282948376db14919ad12e589eac2b

xlators/storage/posix/src/posix-{gfid-path|inode-fd-ops}.c: remove memset()
before sys_*xattr() functions.

I don't see a reason to memset the array sent to the functions
sys_llistxattr(), sys_lgetxattr(), sys_lgetxattr(), sys_flistxattr(),
sys_fgetxattr().

(Note: it's unclear to me why we are calling sys_*txattr() functions with
XATTR_VAL_BUF_SIZE-1 size instead of XATTR_VAL_BUF_SIZE ).

Only compile-tested!

Change-Id: Ief2103b56ba6c71e40ed343a93684eef6b771346
updates: bz#1193929
Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a squash of multiple commits:

contrib/fuse-lib/misc.c: remove unneeded memset()

All flock variables are properly set, no need to memset it.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I8e0512c5a88daadb0e587f545fdb9b32ca8858a2

libglusterfs/src/{client_t|fd|inode|stack}.c: remove some memset()

I don't think there's a need for any of them.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I2be9ccc3a5cb5da51a92af73488cdabd1c527f59

libglusterfs/src/xlator.c: remove unneeded memset()

All xl-&gt;mem_acct members are properly set,
no need to memset it.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I7f264cd47e7a06255a3f3943c583de77ae8e3147

xlators/cluster/afr/src/afr-self-heal-common.c: remove unneeded memset()

Since we are going over the whole array anyway, initialize it
properly, to either 1 or 0.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: Ied4210388976b6a7a2e91cc3de334534d6fef201

xlators/cluster/dht/src/dht-common.c: remove unneeded memset()

Since we are going over the whole array anyway it is initialized
properly.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: Idc436d2bd0563b6582908d7cbebf9dbc66a42c9a

xlators/cluster/ec/src/ec-helpers.c: remove unneeded memset()

Since we are going over the whole array anyway it is initialized
properly.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I81bf971f7fcecb4599e807d37f426f55711978fa

xlators/mgmt/glusterd/src/glusterd-volgen.c: remove some memset()

I don't think there's a need for any of them.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I476ea59ba53546b5153c269692cd5383da81ce2d

xlators/mgmt/glusterd/src/glusterd-geo-rep.c: read() in 4K blocks

The current 1K seems small. 4K is usually better (in Linux).

Also remove a memset() that I don't think is needed between reads.

Only compile-tested!

Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;

Change-Id: I5fb7950c92d282948376db14919ad12e589eac2b

xlators/storage/posix/src/posix-{gfid-path|inode-fd-ops}.c: remove memset()
before sys_*xattr() functions.

I don't see a reason to memset the array sent to the functions
sys_llistxattr(), sys_lgetxattr(), sys_lgetxattr(), sys_flistxattr(),
sys_fgetxattr().

(Note: it's unclear to me why we are calling sys_*txattr() functions with
XATTR_VAL_BUF_SIZE-1 size instead of XATTR_VAL_BUF_SIZE ).

Only compile-tested!

Change-Id: Ief2103b56ba6c71e40ed343a93684eef6b771346
updates: bz#1193929
Signed-off-by: Yaniv Kaul &lt;ykaul@redhat.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
