misc-5.12-2021-03-02

-----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAmA+45IQHGF4Ym9lQGtl
 cm5lbC5kawAKCRD301j7KXHgpv/MD/4zFTBZ2Vr3lYQB8Ds9gl3hXJ00Y/27Bh9R
 bQD0BNcC4o6Ytt5YMAIpM7c5Qk7U3nlTM9D7lPReBxlBHL0dQBD1nCtoqnWUqvLM
 H30zF6iwFl/Moy29B2+stzOnRIRxKKG9KXz9z+tnpiJrblmIGFpYUtuhp01cfxIP
 EJ7R4ZpaSzGwcbZ1hsnxYLlQ9KZEUnzeCPZVTazNttsrb1uZdDhiJAwNAYcQwDj0
 o3LR9/21tBAAeoSw5Svso2GOW4mAnzhahxSV4yqY3cM+sZZz6dBbAX+2VTgkVaEl
 026MCG229XFj55PdjjQtiqvWkJm2wADAkjxlNsgbRbgGhRdI2ko7jmJ4QEmT/jXW
 ziUv791hAU7SLbQP/5kkNgtJPNH2F5pup1a1pnwr7Gi9yeNfCajHvGMpvmCdJclR
 2iBQuXKAAHYHFEOt08gZIlxvGhG6axar445+f1Jc00k4v/vmNK2K6aebDVYHib7Q
 q1LVrNWFLTV4p3k6Rk4N+0vlAoVbnsyHNILunCOLhgRaMLejYhFj6LGjAeYLZVI6
 4AjWzlyQOaRakIJcIi3EWlXJRfGROFqyNjjDp35eiYyN+kv+77gar/lBdVQFeZwX
 CuAvfGrLUlQLhIjJgzOzN/M7BO3a5QmrIDige6GswxU1ABsLrjTmWAS04j/LXVB3
 8BhXHEMx+g==
 =fEry
 -----END PGP SIGNATURE-----

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
This commit is contained in:
Linus Torvalds 2021-03-02 18:18:17 -08:00
commit f69d02e37a
4 changed files with 16 additions and 6 deletions

View File

@ -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())

View File

@ -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)
{ {

View File

@ -254,11 +254,6 @@ out:
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

View File

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