|
@@ -590,14 +590,20 @@ ssize_t fuse_simple_request(struct fuse_conn *fc, struct fuse_args *args)
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
-static void fuse_request_send_nowait_locked(struct fuse_conn *fc,
|
|
|
|
- struct fuse_req *req)
|
|
|
|
|
|
+/*
|
|
|
|
+ * Called under fc->lock
|
|
|
|
+ *
|
|
|
|
+ * fc->connected must have been checked previously
|
|
|
|
+ */
|
|
|
|
+void fuse_request_send_background_locked(struct fuse_conn *fc,
|
|
|
|
+ struct fuse_req *req)
|
|
{
|
|
{
|
|
BUG_ON(!req->background);
|
|
BUG_ON(!req->background);
|
|
if (!req->waiting) {
|
|
if (!req->waiting) {
|
|
req->waiting = 1;
|
|
req->waiting = 1;
|
|
atomic_inc(&fc->num_waiting);
|
|
atomic_inc(&fc->num_waiting);
|
|
}
|
|
}
|
|
|
|
+ req->isreply = 1;
|
|
fc->num_background++;
|
|
fc->num_background++;
|
|
if (fc->num_background == fc->max_background)
|
|
if (fc->num_background == fc->max_background)
|
|
fc->blocked = 1;
|
|
fc->blocked = 1;
|
|
@@ -610,12 +616,12 @@ static void fuse_request_send_nowait_locked(struct fuse_conn *fc,
|
|
flush_bg_queue(fc);
|
|
flush_bg_queue(fc);
|
|
}
|
|
}
|
|
|
|
|
|
-static void fuse_request_send_nowait(struct fuse_conn *fc, struct fuse_req *req)
|
|
|
|
|
|
+void fuse_request_send_background(struct fuse_conn *fc, struct fuse_req *req)
|
|
{
|
|
{
|
|
BUG_ON(!req->end);
|
|
BUG_ON(!req->end);
|
|
spin_lock(&fc->lock);
|
|
spin_lock(&fc->lock);
|
|
if (fc->connected) {
|
|
if (fc->connected) {
|
|
- fuse_request_send_nowait_locked(fc, req);
|
|
|
|
|
|
+ fuse_request_send_background_locked(fc, req);
|
|
spin_unlock(&fc->lock);
|
|
spin_unlock(&fc->lock);
|
|
} else {
|
|
} else {
|
|
spin_unlock(&fc->lock);
|
|
spin_unlock(&fc->lock);
|
|
@@ -624,12 +630,6 @@ static void fuse_request_send_nowait(struct fuse_conn *fc, struct fuse_req *req)
|
|
fuse_put_request(fc, req);
|
|
fuse_put_request(fc, req);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
-void fuse_request_send_background(struct fuse_conn *fc, struct fuse_req *req)
|
|
|
|
-{
|
|
|
|
- req->isreply = 1;
|
|
|
|
- fuse_request_send_nowait(fc, req);
|
|
|
|
-}
|
|
|
|
EXPORT_SYMBOL_GPL(fuse_request_send_background);
|
|
EXPORT_SYMBOL_GPL(fuse_request_send_background);
|
|
|
|
|
|
static int fuse_request_send_notify_reply(struct fuse_conn *fc,
|
|
static int fuse_request_send_notify_reply(struct fuse_conn *fc,
|
|
@@ -649,18 +649,6 @@ static int fuse_request_send_notify_reply(struct fuse_conn *fc,
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
|
|
|
|
-/*
|
|
|
|
- * Called under fc->lock
|
|
|
|
- *
|
|
|
|
- * fc->connected must have been checked previously
|
|
|
|
- */
|
|
|
|
-void fuse_request_send_background_locked(struct fuse_conn *fc,
|
|
|
|
- struct fuse_req *req)
|
|
|
|
-{
|
|
|
|
- req->isreply = 1;
|
|
|
|
- fuse_request_send_nowait_locked(fc, req);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
void fuse_force_forget(struct file *file, u64 nodeid)
|
|
void fuse_force_forget(struct file *file, u64 nodeid)
|
|
{
|
|
{
|
|
struct inode *inode = file_inode(file);
|
|
struct inode *inode = file_inode(file);
|