summaryrefslogtreecommitdiff
blob: 971c78d3f994f7341a3db5043bf5cc4c486c7a42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Index: vserver-sources-2.1.1_2.6.16/drivers/block/loop.c
===================================================================
--- vserver-sources-2.1.1_2.6.16.orig/drivers/block/loop.c
+++ vserver-sources-2.1.1_2.6.16/drivers/block/loop.c
@@ -74,6 +74,7 @@
 #include <linux/completion.h>
 #include <linux/highmem.h>
 #include <linux/gfp.h>
+#include <linux/vs_context.h>
 
 #include <asm/uaccess.h>
 
@@ -743,6 +744,7 @@ static int loop_set_fd(struct loop_devic
 	struct file	*file, *f;
 	struct inode	*inode;
 	struct address_space *mapping;
+	struct vx_info_save vxis;
 	unsigned lo_blocksize;
 	int		lo_flags = 0;
 	int		error;
@@ -840,7 +842,9 @@ static int loop_set_fd(struct loop_devic
 
 	set_blocksize(bdev, lo_blocksize);
 
+	__enter_vx_admin(&vxis);
 	pid = kernel_thread(loop_thread, lo, CLONE_KERNEL);
+	__leave_vx_admin(&vxis);
 	if (pid < 0)
 		goto out_err;
 	wait_for_completion(&lo->lo_done);