| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- this procedure processes inode_ctx to make decisions like whether the
current procedure can continue (i.e., inode is already looked up),
or the procedure has to initiate/wait for lookup on the path. It also
sets up the frame->local and adds the stub corresponding to current fop
if needed.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 284 (performance actually decreases for 'ls -l' on a directory containing large number of files with stat-prefetch loaded)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=284
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 284 (performance actually decreases for 'ls -l' on a directory containing large number of files with stat-prefetch loaded)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=284
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- change sp_lookup and sp_lookup_cbk to support sending lookups when needed.
lookups might need to be sent in fops like open, chmod, chown etc which
operate on a path, since the actual lookup sent to stat-prefetch by its
parent xlators is not propagated down the xlator tree if the path is
cached.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 284 (performance actually decreases for 'ls -l' on a directory containing large number of files with stat-prefetch loaded)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=284
|
|
|
|
|
|
|
|
|
|
|
|
| |
- lookup-behind should be done on-demand basis, in fops like open
instead of in sp_lookup itself. This would reduce network traffic
between client and server related to lookup, if the only use of
lookup was to fetch stat structure.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 284 (performance actually decreases for 'ls -l' on a directory containing large number of files with stat-prefetch loaded)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=284
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 284 (performance actually decreases for 'ls -l' on a directory containing large number of files with stat-prefetch loaded)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=284
|
|
|
|
|
|
|
|
|
|
|
| |
- if stat cache cannot be found for a path in its parent inode and the path
is a directory, we can get the cache from the inode corresponding to path
and look for "." in that cache.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 284 (performance actually decreases for 'ls -l' on a directory containing large number of files with stat-prefetch loaded)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=284
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
not NULL.
- if the xattr_req is empty (fuse just creates an empty dictionary and
sends along lookup) we can still use the cache prefetched during readdir,
since we need not fill the reply dictionary.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 284 (performance actually decreases for 'ls -l' on a directory containing large number of files with stat-prefetch loaded)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=284
|
|
|
|
|
|
|
|
|
| |
instead of list for caching dentries.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 284 (performance actually decreases for 'ls -l' on a directory containing large number of files with stat-prefetch loaded)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=284
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- sp_cache_get_inode uses fd_lookup which internally increases the refcount of
fd by 1. This needs to be unrefed once we get the cache.
- for directories, stat is stored in the inode context in sp_lookup_cbk.
but, while doing so, no check was being done for the presence of context
in inode, resulting in leak of memory equal to sizeof (struct stat) when
multiple lookups happened on the directory. stat was needed to serve the
postparent member during lookup. postparent stat is needed only in releases
having NFS related changes and hence removing code present to get
postparent.
- path constructed in sp_readdir was not freed.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 257 (Backport stat-prefetch to 2.0)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=257
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 260 (ls on booster VMP results in error: "File descriptor in bad state")
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=260
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 260 (ls on booster VMP results in error: "File descriptor in bad state")
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=260
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
request->stub->fop.
- for non-write wind requests, the request structure outlives the stub.
The call stub is destroyed when stack is wound but request is destroyed
only when the reply has come.
(for writes, both stub and request are destroyed when refcount becomes 0,
which happens only when the write operation is stack unwound and a reply
for the write operation has come from underlying translators, for non-write
unwind requests the request is first destroyed before resuming the stub).
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 280 (simple stripe, with write-behind set up, when dbench is run client crashes.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=280
|
|
|
|
|
|
|
|
|
|
| |
- this helps us to not traverse the request list whenever we need currently
aggregated data in the queue
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
| |
- this would increase the performance since we don't have to traverse the
request list every time we need the current window size.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
| |
- request structure now holds a member write_size which is initialised at the
time of request creation and used later.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- With this option enabled, writes are stack-wound even though not enough
data is aggregated, provided there are no write-requests which are
stack-wound but reply is yet to come. The reason behind this option
is to make use of the network, which is relatively free (with no writes
or replies in transit). However, with non-standard block-sizes of writes
the performance can actually degrade. Hence making this configurable.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- move all the decision making code to __wb_can_wind.
- don't continue traversing the request list, once we know any of the
following conditions are true:
* requests other than write are present in queue.
* writes are happening at non-contiguous offsets.
* there are no write requests, which are wound to server but not yet
received the reply.
* enough data is aggregated for writing.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
| |
- don't traverse entire request list to get the window-size, instead break when current
window size becomes greater than configured limit.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
|
|
| |
the wind list in wb_sync.
- no need of getting the total_count of number of requests in the list.
Even if there is a single request, we need to sync it.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
| |
single iobuf.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- remove wb_mark_wind_aggregegate_size_aware, since wb_mark_wind_all does
the same work (with check for whether current aggregated data size is
greater than the configured limit before calling it). Moreover,
wb_mark_wind_aggregate_size_aware called __wb_get_aggregate_size
redundantly, thereby reducing the performance, since for small
sized large number of writes, traversing the list of requests takes
significant amount of time.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 276 (write behind needs to be optimized.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276
|
|
|
|
|
|
|
|
|
|
| |
- An extra vector was being allocated when the number of bytes being read
from cache were equal to the iobuf size.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 274 (Memory corruption in Apache running on booster)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=274
|
|
|
|
|
|
|
|
|
|
|
| |
- qr_lookup not to send request for file-content if the cache is already
present during revalidates.
- flush the cache in qr_lookup_cbk if the cache is not in sync with the file.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 273 (Code review and optimize quick-read)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=273
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 273 (Code review and optimize quick-read)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=273
|
|
|
|
|
|
|
|
|
| |
if not present should be atomic.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 273 (Code review and optimize quick-read)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=273
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- a new size has to be set in xattr_req only
if (quick-read is configured with a maximum file size limit
&& ((xattr_req does not have a request key for getting content)
|| (the size requested in xattr_req is not equal to configured
size in quick-read)))
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 273 (Code review and optimize quick-read)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=273
|
|
|
|
|
|
|
|
|
| |
opened on directories.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 260 (ls on booster VMP results in error: "File descriptor in bad state")
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=260
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
glusterfs_get_ctx
- since glusterfs_get_ctx gets the global context pointer, there can be
problems in a multithreaded application running on libglusterfsclient
doing multiple glusterfs_inits. Hence use context specific to the
current xlator tree stored in each xlator object.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 240 (segmentation fault in qr_readv)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=240
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
patch http://patches.gluster.com/patch/1319/ breaks when no priority
is mentioned in the config. the patch makes ioc_get_priority() return
1 as the value when no priority is given, but ioc_get_priority_list()
was still returning 0 as the max_pri (maximum priority) which would
result in lru list heads not getting initialized
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 261 (support for disabling caching of certain files)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=261
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Hello all,
here is a small feature patch. Its intention is to give the user more control
over the files performance/io-cache really caches. If the user knows exactly
which files should be cached and which shouldn't there is currently no way to
tell glusterfs _not_ to cache certain pattern. This patch allows you to
disable caching by setting the priority of a pattern to "0". If you do not
give any priority option it works just like before and caches everything.
Honestly I am not totally sure that disabling caching works the way we did it,
please comment.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 261 (support for disabling caching of certain files)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=261
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 238 (Backport quick-read to 2.0 release)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=238
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 257 (Backport stat-prefetch to 2.0)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=257
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 243 (Hold locks when accessing members of wb_file_t.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=243
|
|
|
|
|
|
|
|
|
| |
in the next immediate writes from application.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 242 (If any of the writes fail, write-behind should not wait till the fd is closed for reporting errors)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=242
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 196 (write-behind window size getting set to 0.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=196
|
|
|
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 196 (write-behind window size getting set to 0.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=196
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
| |
open() & create() calls should reset frame->local to NULL.
bz# 104
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
| |
Write calls should not be pushed to background only when the
mandatory locking is enabled, in all other cases (eg: O_SYNC,
O_DIRECT etc), we should not be 'caching' any data, but the
calls can be pushed to the background
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
|
| |
their context.
- since a successful open/create will _always_ set a pointer to ra_file_t in
context of fd, this fix makes sense.
- an example of operations on bad fd can be afr sending read on the child
which was down during open.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
| |
memory allocation for ra_file in open/create
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. A page will be put on the inode waitq if the 'freshness' has to be verified with an fstat()
2. while the fstat is in transit, other calls (like lookup) can update ioc_inode->tv, resetting the freshness (page still on inode waitq)
3. Another read request on the same page, after the updated freshness, will wake up the page frames neglecting the fact that the page is also waiting on the inode (waiting for the fstat completion)
4. once the page's frames are woken, the page becomes elegible for purging and can get destroyed for various reasons, leaving a destroyed page pointer in the inode's waitq
5. fstat returns and hits the destroyed page pointer causing a crash
The fix is to all together disable cache hits when any page of the same inode is under validation. The otherwise cache hit will now be subjected to the ongoing validation by getting queued to the inode waitq.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
|
|
|
|
|
|
|
|
|
| |
- sc_readlink wrongly returned strlen (link) + 1 when link was present in
cache.
- this fixes rt #828. Since fuse_readlink_cbk does link[op_ret] = '\0', there
was a memory corruption.
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch cleans up io-threads behaviour regarding the
range values that can be specified for min-threads
and max-threads. THe major change is that the min threads
have been reduced to 2 to signify that io-threads needs minimum
two threads for its operation, while keeping the default number of
threads at 16. The idea is to decouple the default thread count
from the minimum thread count.
Note to Avati:
This applies over Raghu's indentation and logging take-3 patch.
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|
|
|
|
| |
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
|