SCSI fixes on 20241108
Two small fixes, the drivers one in ufs simply delays running a work queue and the generic one in zoned storage switches to a more correct API that tries the standard buddy allocator first (for small allocations); this fixes an allocation problem with small allocations seen under memory pressure. Signed-off-by: James E.J. Bottomley <James.Bottomley@HansenPartnership.com> -----BEGIN PGP SIGNATURE----- iJwEABMIAEQWIQTnYEDbdso9F2cI+arnQslM7pishQUCZy5pZSYcamFtZXMuYm90 dG9tbGV5QGhhbnNlbnBhcnRuZXJzaGlwLmNvbQAKCRDnQslM7pishdonAQCeHKnp BkxbSls2uPQn4DAxak1tCfxTujMFWxQHP2Y92gEA2q3chF7P136z2rYp0wGfm7P4 ivxddAWZth4tV7TUUw8= =by5B -----END PGP SIGNATURE----- Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi Pull SCSI fixes from James Bottomley: "Two small fixes, the drivers one in ufs simply delays running a work queue and the generic one in zoned storage switches to a more correct API that tries the standard buddy allocator first (for small allocations); this fixes an allocation problem with small allocations seen under memory pressure" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: scsi: ufs: core: Start the RTC update work later scsi: sd_zbc: Use kvzalloc() to allocate REPORT ZONES buffer
This commit is contained in:
commit
c291c9cfd7
@ -188,8 +188,7 @@ static void *sd_zbc_alloc_report_buffer(struct scsi_disk *sdkp,
|
|||||||
bufsize = min_t(size_t, bufsize, queue_max_segments(q) << PAGE_SHIFT);
|
bufsize = min_t(size_t, bufsize, queue_max_segments(q) << PAGE_SHIFT);
|
||||||
|
|
||||||
while (bufsize >= SECTOR_SIZE) {
|
while (bufsize >= SECTOR_SIZE) {
|
||||||
buf = __vmalloc(bufsize,
|
buf = kvzalloc(bufsize, GFP_KERNEL | __GFP_NORETRY);
|
||||||
GFP_KERNEL | __GFP_ZERO | __GFP_NORETRY);
|
|
||||||
if (buf) {
|
if (buf) {
|
||||||
*buflen = bufsize;
|
*buflen = bufsize;
|
||||||
return buf;
|
return buf;
|
||||||
|
@ -8636,6 +8636,14 @@ static int ufshcd_add_lus(struct ufs_hba *hba)
|
|||||||
ufshcd_init_clk_scaling_sysfs(hba);
|
ufshcd_init_clk_scaling_sysfs(hba);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The RTC update code accesses the hba->ufs_device_wlun->sdev_gendev
|
||||||
|
* pointer and hence must only be started after the WLUN pointer has
|
||||||
|
* been initialized by ufshcd_scsi_add_wlus().
|
||||||
|
*/
|
||||||
|
schedule_delayed_work(&hba->ufs_rtc_update_work,
|
||||||
|
msecs_to_jiffies(UFS_RTC_UPDATE_INTERVAL_MS));
|
||||||
|
|
||||||
ufs_bsg_probe(hba);
|
ufs_bsg_probe(hba);
|
||||||
scsi_scan_host(hba->host);
|
scsi_scan_host(hba->host);
|
||||||
|
|
||||||
@ -8795,8 +8803,6 @@ static int ufshcd_device_init(struct ufs_hba *hba, bool init_dev_params)
|
|||||||
ufshcd_force_reset_auto_bkops(hba);
|
ufshcd_force_reset_auto_bkops(hba);
|
||||||
|
|
||||||
ufshcd_set_timestamp_attr(hba);
|
ufshcd_set_timestamp_attr(hba);
|
||||||
schedule_delayed_work(&hba->ufs_rtc_update_work,
|
|
||||||
msecs_to_jiffies(UFS_RTC_UPDATE_INTERVAL_MS));
|
|
||||||
|
|
||||||
/* Gear up to HS gear if supported */
|
/* Gear up to HS gear if supported */
|
||||||
if (hba->max_pwr_info.is_valid) {
|
if (hba->max_pwr_info.is_valid) {
|
||||||
|
Loading…
Reference in New Issue
Block a user