Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 831d0949 authored by Al Viro's avatar Al Viro Committed by Mike Marshall
Browse files

orangefs: move wakeups into set_op_state_{serviced,purged}()

parent b7ae37b0
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -415,8 +415,6 @@ static ssize_t orangefs_devreq_write_iter(struct kiocb *iocb,
		set_op_state_serviced(op);
		spin_unlock(&op->lock);

		wake_up_interruptible(&op->waitq);

		while (1) {
			spin_lock(&op->lock);
			prepare_to_wait_exclusive(
@@ -464,17 +462,14 @@ static ssize_t orangefs_devreq_write_iter(struct kiocb *iocb,
	} else {
		/*
		 * tell the vfs op waiting on a waitqueue that
		 * this op is done
		 */
		spin_lock(&op->lock);
		set_op_state_serviced(op);
		spin_unlock(&op->lock);
		/*
		 * this op is done -
		 * for every other operation (i.e. non-I/O), we need to
		 * wake up the callers for downcall completion
		 * notification
		 */
		wake_up_interruptible(&op->waitq);
		spin_lock(&op->lock);
		set_op_state_serviced(op);
		spin_unlock(&op->lock);
	}
out:
	return ret;
+10 −2
Original line number Diff line number Diff line
@@ -105,8 +105,16 @@ enum orangefs_vfs_op_states {

#define set_op_state_waiting(op)     ((op)->op_state = OP_VFS_STATE_WAITING)
#define set_op_state_inprogress(op)  ((op)->op_state = OP_VFS_STATE_INPROGR)
#define set_op_state_serviced(op)    ((op)->op_state = OP_VFS_STATE_SERVICED)
#define set_op_state_purged(op)      ((op)->op_state |= OP_VFS_STATE_PURGED)
static inline void set_op_state_serviced(struct orangefs_kernel_op_s *op)
{
	op->op_state = OP_VFS_STATE_SERVICED;
	wake_up_interruptible(&op->waitq);
}
static inline void set_op_state_purged(struct orangefs_kernel_op_s *op)
{
	op->op_state |= OP_VFS_STATE_PURGED;
	wake_up_interruptible(&op->waitq);
}

#define op_state_waiting(op)     ((op)->op_state & OP_VFS_STATE_WAITING)
#define op_state_in_progress(op) ((op)->op_state & OP_VFS_STATE_INPROGR)
+0 −1
Original line number Diff line number Diff line
@@ -303,7 +303,6 @@ void purge_inprogress_ops(void)
				get_opname_string(op));
			set_op_state_purged(op);
			spin_unlock(&op->lock);
			wake_up_interruptible(&op->waitq);
		}
	}
}
+0 −1
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ void purge_waiting_ops(void)
		spin_lock(&op->lock);
		set_op_state_purged(op);
		spin_unlock(&op->lock);
		wake_up_interruptible(&op->waitq);
	}
	spin_unlock(&orangefs_request_list_lock);
}