Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1174253AbdDXUNL (ORCPT ); Mon, 24 Apr 2017 16:13:11 -0400 Received: from mailrelay103.isp.belgacom.be ([195.238.20.130]:17624 "EHLO mailrelay103.isp.belgacom.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1174178AbdDXUND (ORCPT ); Mon, 24 Apr 2017 16:13:03 -0400 X-Belgacom-Dynamic: yes IronPort-PHdr: =?us-ascii?q?9a23=3AJLSrbxbomkFn8dOzKA2fsez/LSx+4OfEezUN459i?= =?us-ascii?q?sYplN5qZpcy6bnLW6fgltlLVR4KTs6sC0LWG9f24EUU7or+/81k6OKRWUBEEjc?= =?us-ascii?q?hE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i76xXcoFx7+LQt4?= =?us-ascii?q?IPjuUs6X1pzvlrP6x5qGSgNEnjeiKZZ1Ngmxq02Fv8oOhKNmK6As2l7HpWZOd+?= =?us-ascii?q?1KxGRuY1WJkECvyN23+ctN+i5RsvRp2dRNXajgfq87BehWBT4oG3s29cvmqV/J?= =?us-ascii?q?QF3ctTMnTmwKn08QUED+5xbgU8K063Oiuw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2CXBAAVW/5Y/zfGs1tdHAELAQUBgmprJ?= =?us-ascii?q?zqBDI5vkSMBlTqCDyELhXiEFUEXAQEBAQEBAQEBAQFqKIIzBAEdAQSCaS8jKXE?= =?us-ascii?q?kE4oPEQqtFTqEEIcMLQWGU4gOhFqCSgWdQYcXi2INkVeUGSABNoEGQx0YhF2CU?= =?us-ascii?q?T41AYdmgU8BAQE?= X-IPAS-Result: =?us-ascii?q?A2CXBAAVW/5Y/zfGs1tdHAELAQUBgmprJzqBDI5vkSMBlTq?= =?us-ascii?q?CDyELhXiEFUEXAQEBAQEBAQEBAQFqKIIzBAEdAQSCaS8jKXEkE4oPEQqtFTqEE?= =?us-ascii?q?IcMLQWGU4gOhFqCSgWdQYcXi2INkVeUGSABNoEGQx0YhF2CUT41AYdmgU8BAQE?= From: Fabian Frederick To: Andrew Morton Cc: Alexander Viro , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, fabf@skynet.be Subject: [PATCH 1/2 linux-next] fs/affs: bugfix: enable writes on OFS disks Date: Mon, 24 Apr 2017 22:12:57 +0200 Message-Id: <20170424201257.1575-1-fabf@skynet.be> X-Mailer: git-send-email 2.9.3 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1799 Lines: 58 We called unconditionally affs_bread_ino() with create 0 resulting in "error (device ...): get_block(): strange block request 0" when trying to write on AFFS OFS format. This patch adds create parameter to that function. 0 for affs_readpage_ofs() 1 for affs_write_begin_ofs() Bug was found here: https://bugzilla.kernel.org/show_bug.cgi?id=114961 Signed-off-by: Fabian Frederick --- fs/affs/file.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/affs/file.c b/fs/affs/file.c index 0deec9c..e5c5de6 100644 --- a/fs/affs/file.c +++ b/fs/affs/file.c @@ -499,7 +499,7 @@ affs_getemptyblk_ino(struct inode *inode, int block) } static int -affs_do_readpage_ofs(struct page *page, unsigned to) +affs_do_readpage_ofs(struct page *page, unsigned to, int create) { struct inode *inode = page->mapping->host; struct super_block *sb = inode->i_sb; @@ -518,7 +518,7 @@ affs_do_readpage_ofs(struct page *page, unsigned to) boff = tmp % bsize; while (pos < to) { - bh = affs_bread_ino(inode, bidx, 0); + bh = affs_bread_ino(inode, bidx, create); if (IS_ERR(bh)) return PTR_ERR(bh); tmp = min(bsize - boff, to - pos); @@ -620,7 +620,7 @@ affs_readpage_ofs(struct file *file, struct page *page) memset(page_address(page) + to, 0, PAGE_SIZE - to); } - err = affs_do_readpage_ofs(page, to); + err = affs_do_readpage_ofs(page, to, 0); if (!err) SetPageUptodate(page); unlock_page(page); @@ -657,7 +657,7 @@ static int affs_write_begin_ofs(struct file *file, struct address_space *mapping return 0; /* XXX: inefficient but safe in the face of short writes */ - err = affs_do_readpage_ofs(page, PAGE_SIZE); + err = affs_do_readpage_ofs(page, PAGE_SIZE, 1); if (err) { unlock_page(page); put_page(page); -- 2.9.3