Displaying 13 results from an estimated 13 matches for "write_pag".
Did you mean:
write_page
2019 May 09
2
[RFC PATCH V2] vhost: don't use kmap() to log dirty pages
...1 << nr, &old, addr);
+ /* TODO: fallback to kmap() when -ENOSYS? */
+
set_page_dirty_lock(page);
put_page(page);
- return 0;
+ return r;
}
-static int log_write(void __user *log_base,
+static int log_write(u32 __user *log_base,
u64 write_address, u64 write_length)
{
u64 write_page = write_address / VHOST_PAGE_SIZE;
@@ -1726,12 +1727,10 @@ static int log_write(void __user *log_base,
return 0;
write_length += write_address % VHOST_PAGE_SIZE;
for (;;) {
- u64 base = (u64)(unsigned long)log_base;
- u64 log = base + write_page / 8;
- int bit = write_page % 8;
- if ((u...
2019 May 09
2
[RFC PATCH V2] vhost: don't use kmap() to log dirty pages
...1 << nr, &old, addr);
+ /* TODO: fallback to kmap() when -ENOSYS? */
+
set_page_dirty_lock(page);
put_page(page);
- return 0;
+ return r;
}
-static int log_write(void __user *log_base,
+static int log_write(u32 __user *log_base,
u64 write_address, u64 write_length)
{
u64 write_page = write_address / VHOST_PAGE_SIZE;
@@ -1726,12 +1727,10 @@ static int log_write(void __user *log_base,
return 0;
write_length += write_address % VHOST_PAGE_SIZE;
for (;;) {
- u64 base = (u64)(unsigned long)log_base;
- u64 log = base + write_page / 8;
- int bit = write_page % 8;
- if ((u...
2019 May 13
5
[PATCH net] vhost: don't use kmap() to log dirty pages
...k(&vhost_log_lock);
+ return r;
}
static int log_write(void __user *log_base,
@@ -1725,13 +1731,13 @@ static int log_write(void __user *log_base,
if (!write_length)
return 0;
write_length += write_address % VHOST_PAGE_SIZE;
+ log_base = (void __user *)((u64)log_base & ~0x3ULL);
+ write_page += ((u64)log_base & 0x3ULL) * 8;
for (;;) {
- u64 base = (u64)(unsigned long)log_base;
- u64 log = base + write_page / 8;
- int bit = write_page % 8;
- if ((u64)(unsigned long)log != log)
- return -EFAULT;
- r = set_bit_to_user(bit, (void __user *)(unsigned long)log);
+ u32 __user *l...
2019 May 13
5
[PATCH net] vhost: don't use kmap() to log dirty pages
...k(&vhost_log_lock);
+ return r;
}
static int log_write(void __user *log_base,
@@ -1725,13 +1731,13 @@ static int log_write(void __user *log_base,
if (!write_length)
return 0;
write_length += write_address % VHOST_PAGE_SIZE;
+ log_base = (void __user *)((u64)log_base & ~0x3ULL);
+ write_page += ((u64)log_base & 0x3ULL) * 8;
for (;;) {
- u64 base = (u64)(unsigned long)log_base;
- u64 log = base + write_page / 8;
- int bit = write_page % 8;
- if ((u64)(unsigned long)log != log)
- return -EFAULT;
- r = set_bit_to_user(bit, (void __user *)(unsigned long)log);
+ u32 __user *l...
2019 May 07
4
[PATCH RFC] vhost: don't use kmap() to log dirty pages
...old_log, addr);
+ if (r < 0)
+ return r;
+
set_page_dirty_lock(page);
put_page(page);
return 0;
@@ -1727,8 +1730,8 @@ static int log_write(void __user *log_base,
write_length += write_address % VHOST_PAGE_SIZE;
for (;;) {
u64 base = (u64)(unsigned long)log_base;
- u64 log = base + write_page / 8;
- int bit = write_page % 8;
+ u64 log = base + write_page / 32;
+ int bit = write_page % 32;
if ((u64)(unsigned long)log != log)
return -EFAULT;
r = set_bit_to_user(bit, (void __user *)(unsigned long)log);
--
1.8.3.1
2019 May 07
4
[PATCH RFC] vhost: don't use kmap() to log dirty pages
...old_log, addr);
+ if (r < 0)
+ return r;
+
set_page_dirty_lock(page);
put_page(page);
return 0;
@@ -1727,8 +1730,8 @@ static int log_write(void __user *log_base,
write_length += write_address % VHOST_PAGE_SIZE;
for (;;) {
u64 base = (u64)(unsigned long)log_base;
- u64 log = base + write_page / 8;
- int bit = write_page % 8;
+ u64 log = base + write_page / 32;
+ int bit = write_page % 32;
if ((u64)(unsigned long)log != log)
return -EFAULT;
r = set_bit_to_user(bit, (void __user *)(unsigned long)log);
--
1.8.3.1
2019 May 14
0
[PATCH net] vhost: don't use kmap() to log dirty pages
...gt;
> static int log_write(void __user *log_base,
> @@ -1725,13 +1731,13 @@ static int log_write(void __user *log_base,
> if (!write_length)
> return 0;
> write_length += write_address % VHOST_PAGE_SIZE;
> + log_base = (void __user *)((u64)log_base & ~0x3ULL);
> + write_page += ((u64)log_base & 0x3ULL) * 8;
> for (;;) {
> - u64 base = (u64)(unsigned long)log_base;
> - u64 log = base + write_page / 8;
> - int bit = write_page % 8;
> - if ((u64)(unsigned long)log != log)
> - return -EFAULT;
> - r = set_bit_to_user(bit, (void __user *)(u...
2019 May 09
0
[RFC PATCH V2] vhost: don't use kmap() to log dirty pages
...is
still nice to have.
> set_page_dirty_lock(page);
> put_page(page);
> - return 0;
> + return r;
> }
>
> -static int log_write(void __user *log_base,
> +static int log_write(u32 __user *log_base,
> u64 write_address, u64 write_length)
> {
> u64 write_page = write_address / VHOST_PAGE_SIZE;
> @@ -1726,12 +1727,10 @@ static int log_write(void __user *log_base,
> return 0;
> write_length += write_address % VHOST_PAGE_SIZE;
> for (;;) {
> - u64 base = (u64)(unsigned long)log_base;
> - u64 log = base + write_page / 8;
> -...
2019 May 08
0
[PATCH RFC] vhost: don't use kmap() to log dirty pages
...> +
> set_page_dirty_lock(page);
> put_page(page);
> return 0;
> @@ -1727,8 +1730,8 @@ static int log_write(void __user *log_base,
> write_length += write_address % VHOST_PAGE_SIZE;
> for (;;) {
> u64 base = (u64)(unsigned long)log_base;
> - u64 log = base + write_page / 8;
> - int bit = write_page % 8;
> + u64 log = base + write_page / 32;
> + int bit = write_page % 32;
> if ((u64)(unsigned long)log != log)
> return -EFAULT;
> r = set_bit_to_user(bit, (void __user *)(unsigned long)log);
> --
> 1.8.3.1
2019 May 10
2
[RFC PATCH V2] vhost: don't use kmap() to log dirty pages
...y_lock(page);
>> put_page(page);
>> - return 0;
>> + return r;
>> }
>>
>> -static int log_write(void __user *log_base,
>> +static int log_write(u32 __user *log_base,
>> u64 write_address, u64 write_length)
>> {
>> u64 write_page = write_address / VHOST_PAGE_SIZE;
>> @@ -1726,12 +1727,10 @@ static int log_write(void __user *log_base,
>> return 0;
>> write_length += write_address % VHOST_PAGE_SIZE;
>> for (;;) {
>> - u64 base = (u64)(unsigned long)log_base;
>> - u64 log = base...
2019 May 10
2
[RFC PATCH V2] vhost: don't use kmap() to log dirty pages
...y_lock(page);
>> put_page(page);
>> - return 0;
>> + return r;
>> }
>>
>> -static int log_write(void __user *log_base,
>> +static int log_write(u32 __user *log_base,
>> u64 write_address, u64 write_length)
>> {
>> u64 write_page = write_address / VHOST_PAGE_SIZE;
>> @@ -1726,12 +1727,10 @@ static int log_write(void __user *log_base,
>> return 0;
>> write_length += write_address % VHOST_PAGE_SIZE;
>> for (;;) {
>> - u64 base = (u64)(unsigned long)log_base;
>> - u64 log = base...
2010 Nov 29
1
[PATCH] vhost: correctly set bits of dirty pages
...static int log_write(void __user *log_base,
u64 write_address, u64 write_length)
{
- int r;
- if (!write_length)
- return 0;
- write_address /= VHOST_PAGE_SIZE;
- for (;;) {
+ int r = 0;
+ while (write_length > 0) {
+ u64 l = VHOST_PAGE_SIZE - write_address % VHOST_PAGE_SIZE;
+ u64 write_page = write_address / VHOST_PAGE_SIZE;
u64 base = (u64)(unsigned long)log_base;
- u64 log = base + write_address / 8;
- int bit = write_address % 8;
+ u64 log = base + write_page / 8;
+ int bit = write_page % 8;
if ((u64)(unsigned long)log != log)
return -EFAULT;
r = set_bit_to_user(b...
2010 Nov 29
1
[PATCH] vhost: correctly set bits of dirty pages
...static int log_write(void __user *log_base,
u64 write_address, u64 write_length)
{
- int r;
- if (!write_length)
- return 0;
- write_address /= VHOST_PAGE_SIZE;
- for (;;) {
+ int r = 0;
+ while (write_length > 0) {
+ u64 l = VHOST_PAGE_SIZE - write_address % VHOST_PAGE_SIZE;
+ u64 write_page = write_address / VHOST_PAGE_SIZE;
u64 base = (u64)(unsigned long)log_base;
- u64 log = base + write_address / 8;
- int bit = write_address % 8;
+ u64 log = base + write_page / 8;
+ int bit = write_page % 8;
if ((u64)(unsigned long)log != log)
return -EFAULT;
r = set_bit_to_user(b...