search for: write_pag

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...