summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Orangefs: improve the POSIXness of interrupted writes...Mike Marshall2016-03-091-9/+45
| | | | | | | Don't return EINTR on interrupted writes if some data has already been written. Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* Orangefs: add a new gossip statementMike Marshall2016-03-091-0/+4
| | | | Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* Orangefs: improve gossip statementsMike Marshall2016-03-034-21/+49
| | | | Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* Orangefs: update orangefs.txtMike Marshall2016-02-262-15/+68
| | | | | | | | Al Viro has cleaned up the way ops are processed and waited for, now orangefs.txt has an overview of how it works. Several recent related commits have added to the comments in the code as well. Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* Orangefs: code sanitation.Mike Marshall2016-02-263-29/+46
| | | | Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: remove unused 'diff' functionArnd Bergmann2016-02-261-11/+0Star
| | | | | | | | | | orangefs contains a helper function to calculate the difference between two timeval structures. We are trying to remove all instances of timespec from the kernel, and this one is not used at all, so let's remove it now. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: avoid time conversion functionArnd Bergmann2016-02-262-12/+5Star
| | | | | | | | | | | | | | | | The new orangefs code uses a helper function to read a time field to its private structures from struct iattr. This will conflict with the move to 64-bit timestamps in the kernel and is generally not necessary. This replaces the conversion with a simple cast to time64_t that shows what is going on. As the orangefs-internal representation already uses 64-bit timestamps, there should be no ambiguity to negative values, and the cast ensures that we treat them as times before 1970 on both 32-bit and 64-bit architectures, rather than times after 2038. This patch keeps that behavior. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: clean up fill_default_sys_attrsMartin Brandenburg2016-02-241-2/+3
| | | | | | | | | | | Size and type are read-only and not in the mask. The times were left unset despite being in the mask. We zero-fill the times since the server will fill them in and we will get the correct time when we fill the inode with getattr. Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: we never lookup with sym_follow setMartin Brandenburg2016-02-242-5/+2Star
| | | | | Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: remove vestigial async io codeMartin Brandenburg2016-02-243-11/+2Star
| | | | | | | | I have verified that there is nothing in the userspace daemon version we are implementing this protocol against that ever looks at this field. Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: use ORANGEFS_NAME_LEN everywhere; remove ORANGEFS_NAME_MAXMartin Brandenburg2016-02-246-21/+20Star
| | | | | Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: don't d_drop in d_revalidate since the caller willMartin Brandenburg2016-02-241-8/+2Star
| | | | | Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: free readdir buffer index before the dir_emit loopMartin Brandenburg2016-02-241-25/+9Star
| | | | | | | | | | | | We only need it while the service operation is actually in progress since it is only used to co-ordinate the client-core's memory use. The kernel allocates its own space. Also clean up some comments which mislead the reader into thinking the readdir buffers are shared memory. Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* Orangefs: code sanitationMike Marshall2016-02-244-14/+29
| | | | Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* Orangefs: clean up orangefs_kernel_op_s comments.Mike Marshall2016-02-241-7/+6Star
| | | | Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: get rid of op refcountsAl Viro2016-02-192-22/+2Star
| | | | | | | not needed anymore Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: have ..._clean_interrupted_...() wait for copy to/from daemonAl Viro2016-02-193-23/+21Star
| | | | | | | | | | | | | | | | | | * turn all those list_del(&op->list) into list_del_init() * don't pick ops that are already given up in control device ->read()/->write_iter(). * have orangefs_clean_interrupted_operation() notice if op is currently being copied to/from daemon (by said ->read()/->write_iter()) and wait for that to finish. * when we are done copying to/from daemon and find that it had been given up while we were doing that, wake the waiting ..._clean_interrupted_... As the result, we are guaranteed that orangefs_clean_interrupted_operation(op) doesn't return until nobody else can see op. Moreover, we don't need to play with op refcounts anymore. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: set correct ->downcall.status on failing to copy reply from daemonAl Viro2016-02-191-39/+22Star
| | | | | | | ... and clean the end of control device ->write_iter() while we are at it Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* Orangefs: remove vestigial ASYNC codeMike Marshall2016-02-191-7/+0Star
| | | | Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* Orangefs: make some gossip statements more helpful.Mike Marshall2016-02-193-21/+41
| | | | Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: get rid of op->doneAl Viro2016-02-194-21/+2Star
| | | | | | | shouldn't be needed now Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs_readdir_index_put(): get rid of bufmap argumentAl Viro2016-02-193-10/+9Star
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: bufmap rewriteAl Viro2016-02-194-247/+174Star
| | | | | | | | | | | | | | | | | | | | | new waiting-for-slot logics: * make request for slot wait for bufmap to be set up if it comes before it's installed *OR* while it's running down * make closing control device wait for all slots to be freed * waiting itself rewritten to (open-coded) analogues of wait_event_... primitives - we would need wait_event_locked() and, pardon an obscenely long name, wait_event_interruptible_exclusive_timeout_locked(). * we never wait for more than slot_timeout_secs in total and, if during the wait the daemon goes away, we only allow ORANGEFS_BUFMAP_WAIT_TIMEOUT_SECS for it to come back. * (cosmetical) bitmap is used instead of an array of zeroes and ones * old (and only reached if we are about to corrupt memory) waiting for daemon restart in service_operation() removed. [Martin's fixes folded] Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs_bufmap_..._query(): don't bother with refcountsAl Viro2016-02-191-8/+8
| | | | | | | ... just hold the spinlock while fetching the field in question. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: lift handling of timeouts and attempts count to service_operation()Al Viro2016-02-191-25/+21Star
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* service_operation(): don't block signals, just use ..._killableAl Viro2016-02-193-40/+14Star
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: sanitize handling of request listAl Viro2016-02-191-50/+18Star
| | | | | | | | | | | | | | * checking that daemon is running (to decide whether we want to limit the timeout) should be done *after* the damn thing is included into the list; doing that before means that if the daemon gets shut down in between, we'll end up waiting indefinitely (== up to kill -9). * cancels should go into the head of the queue - the sooner they are picked, the less work daemon has to do and the sooner we get to free the slot held by aborted operation. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: get rid of loop in wait_for_matching_downcall()Al Viro2016-02-193-88/+49Star
| | | | | | | turn op->waitq into struct completion... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: use S_ISREG(mode) and friends instead of mode & S_IFREG.Martin Brandenburg2016-02-191-3/+3
| | | | | | | Suggestion from Dan Carpenter. Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: delay freeing slot until cancel completesAl Viro2016-02-197-153/+93Star
| | | | | | | | | | | | | | | Make cancels reuse the aborted read/write op, to make sure they do not fail on lack of memory. Don't issue a cancel unless the daemon has seen our read/write, has not replied and isn't being shut down. If cancel *is* issued, don't wait for it to complete; stash the slot in there and just have it freed when cancel is finally replied to or purged (and delay dropping the reference until then, obviously). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* get rid of bufmap argument of orangefs_bufmap_put()Al Viro2016-02-123-5/+6
| | | | | | | | it's always equal to __orangefs_bufmap and the latter can't change until we are done Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: get rid of handle_io_error()Al Viro2016-02-121-51/+14Star
| | | | | | | the second caller never needs to cancel, actually Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: wait_for_direct_io(): restore the position in iter when restartingAl Viro2016-02-121-0/+3
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: avoid freeing a slot twice in wait_for_direct_io()Al Viro2016-02-121-0/+1
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* Orangefs: added a couple of WARN_ONs, perhaps just temporarily.Mike Marshall2016-02-042-0/+2
| | | | Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: Do not retrieve size from servers unless it it necessary.Martin Brandenburg2016-02-041-2/+4
| | | | | Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: Implement inode_operations->permission().Martin Brandenburg2016-02-046-1/+34
| | | | | | | | Thus d_revalidate is not obliged to check on as much, which will eventually lead the way to hammering the filesystem servers much less. Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: Only compare attributes specified in orangefs_inode_getattr.Martin Brandenburg2016-02-041-19/+43
| | | | | Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* Orangefs: clean up slab allocation.Mike Marshall2016-02-044-124/+6Star
| | | | | | | | | | | | | | | A couple of caches were no longer needed: - iov_iter improvements to orangefs_devreq_write_iter eliminated the need for the dev_req_cache. - removal (months ago) of the old AIO code eliminated the need for the kiocb_cache. Also, deobfuscation of use of GFP_KERNEL when calling kmem_cache_(z)alloc for remaining caches. Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* Orangefs: improve gossip statementMike Marshall2016-02-041-2/+5
| | | | | | | | There were two just alike, making it hard maybe to tell which one you were looking at in syslog... so I changed it a little by adding some extra interesting tidbits to it... Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: Fix revalidate.Martin Brandenburg2016-01-285-64/+187
| | | | | | | | | | | | | | | | Previously, it would update a live inode. This was fixed, but it did not ever check that the inode attributes in the dcache are correct. This checks all inode attributes and rejects any that are not correct, which causes a lookup and thus a new getattr. Perhaps inode_operations->permission should replace or augment some of this. There is no actual caching, and this does a rather excessive amount of network operations back to the filesystem server. Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: Util functions shouldn't operate on inode where it can be avoided.Martin Brandenburg2016-01-281-39/+43
| | | | | Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: clean up op_alloc()Al Viro2016-01-233-22/+9Star
| | | | | | | | | fold orangefs_op_initialize() in there, don't bother locking something nobody else could've seen yet, use kmem_cache_zalloc() instead of explicit memset()... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: move handle_io_error() to file.cAl Viro2016-01-232-46/+41Star
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: don't reinvent completion.h...Al Viro2016-01-235-62/+24Star
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* if ORANGEFS_VFS_OP_FILE_IO request had been given up, don't bother waitingAl Viro2016-01-231-16/+16
| | | | | | | | ... we are not going to get woken up anyway, so it's just going to time out and whine. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: get rid of MSECS_TO_JIFFIESAl Viro2016-01-234-17/+6Star
| | | | | | | | | All timeouts are in _seconds_, so all calls are of form MSECS_TO_JIFFIES(n * 1000), which is a convoluted way to spell n * HZ. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs_clean_up_interrupted_operation: call with op->lock heldAl Viro2016-01-231-32/+4Star
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: reduce nesting in wait_for_matching_downcall()Al Viro2016-01-231-60/+58Star
| | | | | | | reorder if branches... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
* orangefs: remove cargo-culting spin_lock_irqsave() in service_operation()Al Viro2016-01-231-7/+0Star
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>