Commit f69d02e3 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'misc-5.12-2021-03-02' of git://git.kernel.dk/linux-block

Pull misc fixes from Jens Axboe:
 "Two misc fixes that don't belong in other branches:

   - Fix a regression with ia64 signals, introduced by the
     TIF_NOTIFY_SIGNAL change in 5.11.

   - Fix the current swapfile regression from this merge window"

* tag 'misc-5.12-2021-03-02' of git://git.kernel.dk/linux-block:
  swap: fix swapfile read/write offset
  ia64: don't call handle_signal() unless there's actually a signal queued
parents 7a7fd0de caf6912f
...@@ -341,7 +341,8 @@ ia64_do_signal (struct sigscratch *scr, long in_syscall) ...@@ -341,7 +341,8 @@ ia64_do_signal (struct sigscratch *scr, long in_syscall)
* need to push through a forced SIGSEGV. * need to push through a forced SIGSEGV.
*/ */
while (1) { while (1) {
get_signal(&ksig); if (!get_signal(&ksig))
break;
/* /*
* get_signal() may have run a debugger (via notify_parent()) * get_signal() may have run a debugger (via notify_parent())
......
...@@ -485,6 +485,7 @@ struct backing_dev_info; ...@@ -485,6 +485,7 @@ struct backing_dev_info;
extern int init_swap_address_space(unsigned int type, unsigned long nr_pages); extern int init_swap_address_space(unsigned int type, unsigned long nr_pages);
extern void exit_swap_address_space(unsigned int type); extern void exit_swap_address_space(unsigned int type);
extern struct swap_info_struct *get_swap_device(swp_entry_t entry); extern struct swap_info_struct *get_swap_device(swp_entry_t entry);
sector_t swap_page_sector(struct page *page);
static inline void put_swap_device(struct swap_info_struct *si) static inline void put_swap_device(struct swap_info_struct *si)
{ {
......
...@@ -254,11 +254,6 @@ int swap_writepage(struct page *page, struct writeback_control *wbc) ...@@ -254,11 +254,6 @@ int swap_writepage(struct page *page, struct writeback_control *wbc)
return ret; return ret;
} }
static sector_t swap_page_sector(struct page *page)
{
return (sector_t)__page_file_index(page) << (PAGE_SHIFT - 9);
}
static inline void count_swpout_vm_event(struct page *page) static inline void count_swpout_vm_event(struct page *page)
{ {
#ifdef CONFIG_TRANSPARENT_HUGEPAGE #ifdef CONFIG_TRANSPARENT_HUGEPAGE
......
...@@ -219,6 +219,19 @@ offset_to_swap_extent(struct swap_info_struct *sis, unsigned long offset) ...@@ -219,6 +219,19 @@ offset_to_swap_extent(struct swap_info_struct *sis, unsigned long offset)
BUG(); BUG();
} }
sector_t swap_page_sector(struct page *page)
{
struct swap_info_struct *sis = page_swap_info(page);
struct swap_extent *se;
sector_t sector;
pgoff_t offset;
offset = __page_file_index(page);
se = offset_to_swap_extent(sis, offset);
sector = se->start_block + (offset - se->start_page);
return sector << (PAGE_SHIFT - 9);
}
/* /*
* swap allocation tell device that a cluster of swap can now be discarded, * swap allocation tell device that a cluster of swap can now be discarded,
* to allow the swap device to optimize its wear-levelling. * to allow the swap device to optimize its wear-levelling.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment