<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git/xlators/performance, branch release-9</title>
<subtitle>GlusterFS is a distributed file-system capable of scaling to several petabytes. It aggregates various storage bricks over Infiniband RDMA or TCP/IP interconnect into one large parallel network file system.</subtitle>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/'/>
<entry>
<title>write-behind: Implement 'pass-through' option</title>
<updated>2020-11-03T06:53:56+00:00</updated>
<author>
<name>Xavi Hernandez</name>
<email>xhernandez@redhat.com</email>
</author>
<published>2020-10-15T08:03:11+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=8c0a1047c16dc9e80bc094cd0a825511252d7035'/>
<id>8c0a1047c16dc9e80bc094cd0a825511252d7035</id>
<content type='text'>
The pass-through option was implemented for all performance xlators
in commit 549b547, but write-behind was missed.

This patch implements the functionality for write-behind.

Given that it's not safe to enable or disable this option while the
volume is mounted, it cannot be reconfigured online. A change will
only take effect after a remount.

Fixes: #1565
Change-Id: I189a48e0044b292e1d6c3b77751ff25045531883
Signed-off-by: Xavi Hernandez &lt;xhernandez@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The pass-through option was implemented for all performance xlators
in commit 549b547, but write-behind was missed.

This patch implements the functionality for write-behind.

Given that it's not safe to enable or disable this option while the
volume is mounted, it cannot be reconfigured online. A change will
only take effect after a remount.

Fixes: #1565
Change-Id: I189a48e0044b292e1d6c3b77751ff25045531883
Signed-off-by: Xavi Hernandez &lt;xhernandez@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>io-cache: Minor Performance Optimization (#1656)</title>
<updated>2020-10-28T02:33:57+00:00</updated>
<author>
<name>Shree Vatsa N</name>
<email>i.mnshreevatsa@gmail.com</email>
</author>
<published>2020-10-28T02:33:57+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=fd8546370a95c216df08cf2901705e6ba989fa16'/>
<id>fd8546370a95c216df08cf2901705e6ba989fa16</id>
<content type='text'>
move trace logs after mutex unlock in some macros

* Also removed unused macros - ioc_page_lock and ioc_page_unlock

Fixes: #1653
Signed-off-by: Shreevatsa N &lt;i.mnshreevatsa@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
move trace logs after mutex unlock in some macros

* Also removed unused macros - ioc_page_lock and ioc_page_unlock

Fixes: #1653
Signed-off-by: Shreevatsa N &lt;i.mnshreevatsa@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>xlators: prefer libglusterfs time API</title>
<updated>2020-09-03T08:17:07+00:00</updated>
<author>
<name>Dmitry Antipov</name>
<email>dmantipov@yandex.ru</email>
</author>
<published>2020-09-03T08:17:07+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=2c349f933df091bd2b346c6fa33473663a41ba8f'/>
<id>2c349f933df091bd2b346c6fa33473663a41ba8f</id>
<content type='text'>
Prefer timespec_now_realtime() and gf_time() over clock_gettime()
and time(), use gf_tvdiff() and gf_tsdiff() where appropriate,
drop unused time_elapsed() and leftovers in 'struct posix_private'.

Change-Id: Ie1f0229df5b03d0862193ce2b7fb91d27b0981b6
Signed-off-by: Dmitry Antipov &lt;dmantipov@yandex.ru&gt;
Updates: #1002
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Prefer timespec_now_realtime() and gf_time() over clock_gettime()
and time(), use gf_tvdiff() and gf_tsdiff() where appropriate,
drop unused time_elapsed() and leftovers in 'struct posix_private'.

Change-Id: Ie1f0229df5b03d0862193ce2b7fb91d27b0981b6
Signed-off-by: Dmitry Antipov &lt;dmantipov@yandex.ru&gt;
Updates: #1002
</pre>
</div>
</content>
</entry>
<entry>
<title>open-behind: implement create fop</title>
<updated>2020-09-04T12:49:50+00:00</updated>
<author>
<name>Xavi Hernandez</name>
<email>xhernandez@redhat.com</email>
</author>
<published>2020-09-04T12:49:50+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=ef01c5297938b5b016bb82c859a05532750c91d9'/>
<id>ef01c5297938b5b016bb82c859a05532750c91d9</id>
<content type='text'>
Open behind didn't implement create fop. This caused that files created
were not accounted for the number of open fd's. This could cause future
opens to be delayed when they shouldn't.

This patch implements the create fop. It also fixes a problem when
destroying the stack: when frame-&gt;local was not NULL, STACK_DESTROY()
tried to mem_put() it, which is not correct.

Fixes: #1440
Change-Id: Ic982bad07d4af30b915d7eb1fbcef7a847a45869
Signed-off-by: Xavi Hernandez &lt;xhernandez@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Open behind didn't implement create fop. This caused that files created
were not accounted for the number of open fd's. This could cause future
opens to be delayed when they shouldn't.

This patch implements the create fop. It also fixes a problem when
destroying the stack: when frame-&gt;local was not NULL, STACK_DESTROY()
tried to mem_put() it, which is not correct.

Fixes: #1440
Change-Id: Ic982bad07d4af30b915d7eb1fbcef7a847a45869
Signed-off-by: Xavi Hernandez &lt;xhernandez@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>performance/md-cache: simplify and cleanup internal time management</title>
<updated>2020-08-24T14:08:07+00:00</updated>
<author>
<name>Dmitry Antipov</name>
<email>dmantipov@yandex.ru</email>
</author>
<published>2020-08-24T14:08:07+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=54faafa7568dc6df4e3de37efea1f810bece65dd'/>
<id>54faafa7568dc6df4e3de37efea1f810bece65dd</id>
<content type='text'>
Since this xlator measures time intervals in seconds, timespec_now()
may be replaced with simpler gf_time(). Consistently use time_t and
uint32_t for timeouts, better error checking in mdc_reconfigure(),
adjust comments and messages as well.

Signed-off-by: Dmitry Antipov &lt;dmantipov@yandex.ru&gt;
Change-Id: I757c988e52db9d92348a900a43c617022a3d62af
Updates: #1002
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since this xlator measures time intervals in seconds, timespec_now()
may be replaced with simpler gf_time(). Consistently use time_t and
uint32_t for timeouts, better error checking in mdc_reconfigure(),
adjust comments and messages as well.

Signed-off-by: Dmitry Antipov &lt;dmantipov@yandex.ru&gt;
Change-Id: I757c988e52db9d92348a900a43c617022a3d62af
Updates: #1002
</pre>
</div>
</content>
</entry>
<entry>
<title>performance/quick-read: simplify and cleanup internal time management</title>
<updated>2020-08-11T08:28:16+00:00</updated>
<author>
<name>Dmitry Antipov</name>
<email>dmantipov@yandex.ru</email>
</author>
<published>2020-08-11T08:28:16+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=fa92e707cc00c9528ce4a5e499305f2b3b666cb2'/>
<id>fa92e707cc00c9528ce4a5e499305f2b3b666cb2</id>
<content type='text'>
Since this xlator measures time intervals in seconds,
gettimeofday() may be replaced with simpler gf_time().

Signed-off-by: Dmitry Antipov &lt;dmantipov@yandex.ru&gt;
Change-Id: I5962771acbe8553dca51970183a55786a5289828
Updates: #1002
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since this xlator measures time intervals in seconds,
gettimeofday() may be replaced with simpler gf_time().

Signed-off-by: Dmitry Antipov &lt;dmantipov@yandex.ru&gt;
Change-Id: I5962771acbe8553dca51970183a55786a5289828
Updates: #1002
</pre>
</div>
</content>
</entry>
<entry>
<title>performance/io-cache: simplify and cleanup internal time management</title>
<updated>2020-08-10T10:01:33+00:00</updated>
<author>
<name>Dmitry Antipov</name>
<email>dmantipov@yandex.ru</email>
</author>
<published>2020-08-10T10:01:33+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=e1d7454edfe403d69a5dadcc253be2ca55df4999'/>
<id>e1d7454edfe403d69a5dadcc253be2ca55df4999</id>
<content type='text'>
Since this xlator measures time intervals in seconds, gettimeofday()
may be replaced with simpler gf_time(). Simplify and convert to
static ioc_inode_need_revalidate() as well.

Signed-off-by: Dmitry Antipov &lt;dmantipov@yandex.ru&gt;
Change-Id: Iaf13ecbf527589286ab3331c37429dd04bf6fa2c
Updates: #1002
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since this xlator measures time intervals in seconds, gettimeofday()
may be replaced with simpler gf_time(). Simplify and convert to
static ioc_inode_need_revalidate() as well.

Signed-off-by: Dmitry Antipov &lt;dmantipov@yandex.ru&gt;
Change-Id: Iaf13ecbf527589286ab3331c37429dd04bf6fa2c
Updates: #1002
</pre>
</div>
</content>
</entry>
<entry>
<title>open-behind: fix call_frame leak</title>
<updated>2020-08-19T21:27:38+00:00</updated>
<author>
<name>Xavi Hernandez</name>
<email>xhernandez@redhat.com</email>
</author>
<published>2020-08-19T21:27:38+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=0f61678b809f764290b43542fd9a00e93c59448a'/>
<id>0f61678b809f764290b43542fd9a00e93c59448a</id>
<content type='text'>
When an open was delayed, a copy of the frame was created because the
current frame was used to unwind the "fake" open. When the open was
actually sent, the frame was correctly destroyed. However if the file
was closed before needing to send the open, the frame was not destroyed.

This patch correctly destroys the frame in all cases.

Change-Id: I8c00fc7f15545c240e8151305d9e4cf06d653926
Signed-off-by: Xavi Hernandez &lt;xhernandez@redhat.com&gt;
Fixes: #1440
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When an open was delayed, a copy of the frame was created because the
current frame was used to unwind the "fake" open. When the open was
actually sent, the frame was correctly destroyed. However if the file
was closed before needing to send the open, the frame was not destroyed.

This patch correctly destroys the frame in all cases.

Change-Id: I8c00fc7f15545c240e8151305d9e4cf06d653926
Signed-off-by: Xavi Hernandez &lt;xhernandez@redhat.com&gt;
Fixes: #1440
</pre>
</div>
</content>
</entry>
<entry>
<title>NetBSD build fixes</title>
<updated>2020-06-30T14:42:36+00:00</updated>
<author>
<name>Emmanuel Dreyfus</name>
<email>manu@netbsd.org</email>
</author>
<published>2020-06-30T14:42:36+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=b6a657e8eb764cc0c0b0cec9d9c87234fc8b1fc4'/>
<id>b6a657e8eb764cc0c0b0cec9d9c87234fc8b1fc4</id>
<content type='text'>
- Make sure -largp is used at link time
- PTHREAD_MUTEX_ADAPTIVE_NP is not available, use PTHREAD_MUTEX_DEFAULT instead
- Avoid non POSIX [[ ]] in scripts
- Do not check of lock.spinlock is NULL since it is not a pointer
  (it is not a pointer on Linux either)

Change-Id: I5e04a7c552d24f8a473c2b837828d1bddfa7e128
Fixes: #1347
Type: Bug
Signed-off-by: Emmanuel Dreyfus &lt;manu@netbsd.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Make sure -largp is used at link time
- PTHREAD_MUTEX_ADAPTIVE_NP is not available, use PTHREAD_MUTEX_DEFAULT instead
- Avoid non POSIX [[ ]] in scripts
- Do not check of lock.spinlock is NULL since it is not a pointer
  (it is not a pointer on Linux either)

Change-Id: I5e04a7c552d24f8a473c2b837828d1bddfa7e128
Fixes: #1347
Type: Bug
Signed-off-by: Emmanuel Dreyfus &lt;manu@netbsd.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Indicate timezone offsets in timestamps</title>
<updated>2020-03-12T07:20:31+00:00</updated>
<author>
<name>Csaba Henk</name>
<email>csaba@redhat.com</email>
</author>
<published>2020-03-12T07:20:31+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=8cb23ee277c9bfd9d002ba657b88d8c2178fd0b5'/>
<id>8cb23ee277c9bfd9d002ba657b88d8c2178fd0b5</id>
<content type='text'>
Logs and other output carrying timestamps
will have now timezone offsets indicated, eg.:

[2020-03-12 07:01:05.584482 +0000] I [MSGID: 106143] [glusterd-pmap.c:388:pmap_registry_remove] 0-pmap: removing brick (null) on port 49153

To this end,

- gf_time_fmt() now inserts timezone offset via %z strftime(3) template.
- A new utility function has been added, gf_time_fmt_tv(), that
  takes a struct timeval pointer (*tv) instead of a time_t value to
  specify the time. If tv-&gt;tv_usec is negative,

  gf_time_fmt_tv(... tv ...)

  is equivalent to

  gf_time_fmt(... tv-&gt;tv_sec ...)

  Otherwise it also inserts tv-&gt;tv_usec to the formatted string.
- Building timestamps of usec precision has been converted to
  gf_time_fmt_tv, which is necessary because the method of appending
  a period and the usec value to the end of the timestamp does not work
  if the timestamp has zone offset, but it's also beneficial in terms of
  eliminating repetition.
- The buffer passed to gf_time_fmt/gf_time_fmt_tv has been unified to
  be of GF_TIMESTR_SIZE size (256). We need slightly larger buffer space
  to accommodate the zone offset and it's preferable to use a buffer
  which is undisputedly large enough.

This change does *not* do the following:

- Retaining a method of timestamp creation without timezone offset.
  As to my understanding we don't need such backward compatibility
  as the code just emits timestamps to logs and other diagnostic
  texts, and doesn't do any later processing on them that would rely
  on their format. An exception to this, ie. a case where timestamp
  is built for internal use, is graph.c:fill_uuid(). As far as I can
  see, what matters in that case is the uniqueness of the produced
  string, not the format.
- Implementing a single-token (space free) timestamp format.
  While some timestamp formats used to be single-token, now all of
  them will include a space preceding the offset indicator. Again,
  I did not see a use case where this could be significant in terms
  of representation.
- Moving the codebase to a single unified timestamp format and
  dropping the fmt argument of gf_time_fmt/gf_time_fmt_tv.
  While the gf_timefmt_FT format is almost ubiquitous, there are
  a few cases where different formats are used. I'm not convinced
  there is any reason to not use gf_timefmt_FT in those cases too,
  but I did not want to make a decision in this regard.

Change-Id: I0af73ab5d490cca7ed8d07a2ce7ac22a6df2920a
Updates: #837
Signed-off-by: Csaba Henk &lt;csaba@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Logs and other output carrying timestamps
will have now timezone offsets indicated, eg.:

[2020-03-12 07:01:05.584482 +0000] I [MSGID: 106143] [glusterd-pmap.c:388:pmap_registry_remove] 0-pmap: removing brick (null) on port 49153

To this end,

- gf_time_fmt() now inserts timezone offset via %z strftime(3) template.
- A new utility function has been added, gf_time_fmt_tv(), that
  takes a struct timeval pointer (*tv) instead of a time_t value to
  specify the time. If tv-&gt;tv_usec is negative,

  gf_time_fmt_tv(... tv ...)

  is equivalent to

  gf_time_fmt(... tv-&gt;tv_sec ...)

  Otherwise it also inserts tv-&gt;tv_usec to the formatted string.
- Building timestamps of usec precision has been converted to
  gf_time_fmt_tv, which is necessary because the method of appending
  a period and the usec value to the end of the timestamp does not work
  if the timestamp has zone offset, but it's also beneficial in terms of
  eliminating repetition.
- The buffer passed to gf_time_fmt/gf_time_fmt_tv has been unified to
  be of GF_TIMESTR_SIZE size (256). We need slightly larger buffer space
  to accommodate the zone offset and it's preferable to use a buffer
  which is undisputedly large enough.

This change does *not* do the following:

- Retaining a method of timestamp creation without timezone offset.
  As to my understanding we don't need such backward compatibility
  as the code just emits timestamps to logs and other diagnostic
  texts, and doesn't do any later processing on them that would rely
  on their format. An exception to this, ie. a case where timestamp
  is built for internal use, is graph.c:fill_uuid(). As far as I can
  see, what matters in that case is the uniqueness of the produced
  string, not the format.
- Implementing a single-token (space free) timestamp format.
  While some timestamp formats used to be single-token, now all of
  them will include a space preceding the offset indicator. Again,
  I did not see a use case where this could be significant in terms
  of representation.
- Moving the codebase to a single unified timestamp format and
  dropping the fmt argument of gf_time_fmt/gf_time_fmt_tv.
  While the gf_timefmt_FT format is almost ubiquitous, there are
  a few cases where different formats are used. I'm not convinced
  there is any reason to not use gf_timefmt_FT in those cases too,
  but I did not want to make a decision in this regard.

Change-Id: I0af73ab5d490cca7ed8d07a2ce7ac22a6df2920a
Updates: #837
Signed-off-by: Csaba Henk &lt;csaba@redhat.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
