Re: [PATCH v2 4/7] lightnvm: pblk: set conservative threshold for user writes

From: kbuild test robot
Date: Mon Nov 05 2018 - 16:16:17 EST


Hi Hans,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v4.20-rc1 next-20181105]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Hans-Holmberg/PBLK-Bugfixes-and-cleanups/20181106-022237
config: i386-randconfig-sb0-11060349 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
reproduce:
# save the attached .config to linux build tree
make ARCH=i386

All errors (new ones prefixed by >>):

drivers/lightnvm/pblk-init.o: In function `pblk_set_provision':
>> drivers/lightnvm/pblk-init.c:668: undefined reference to `__udivdi3'

vim +668 drivers/lightnvm/pblk-init.c

637
638 static int pblk_set_provision(struct pblk *pblk, long nr_free_chks)
639 {
640 struct nvm_tgt_dev *dev = pblk->dev;
641 struct pblk_line_mgmt *l_mg = &pblk->l_mg;
642 struct pblk_line_meta *lm = &pblk->lm;
643 struct nvm_geo *geo = &dev->geo;
644 sector_t provisioned, minimum;
645 int sec_meta, blk_meta;
646
647 if (geo->op == NVM_TARGET_DEFAULT_OP)
648 pblk->op = PBLK_DEFAULT_OP;
649 else
650 pblk->op = geo->op;
651
652 minimum = pblk_get_min_chks(pblk);
653 provisioned = nr_free_chks;
654 provisioned *= (100 - pblk->op);
655 sector_div(provisioned, 100);
656
657 if ((nr_free_chks - provisioned) < minimum) {
658 if (geo->op != NVM_TARGET_DEFAULT_OP) {
659 pblk_err(pblk, "OP too small to create a sane instance\n");
660 return -EINTR;
661 }
662
663 /* If the user did not specify an OP value, and PBLK_DEFAULT_OP
664 * is not enough, calculate and set sane value
665 */
666
667 provisioned = nr_free_chks - minimum;
> 668 pblk->op = (100 * minimum) / nr_free_chks;
669 pblk_info(pblk, "Default OP insufficient, adjusting OP to %d\n",
670 pblk->op);
671 }
672
673 pblk->op_blks = nr_free_chks - provisioned;
674
675 /* Internally pblk manages all free blocks, but all calculations based
676 * on user capacity consider only provisioned blocks
677 */
678 pblk->rl.total_blocks = nr_free_chks;
679 pblk->rl.nr_secs = nr_free_chks * geo->clba;
680
681 /* Consider sectors used for metadata */
682 sec_meta = (lm->smeta_sec + lm->emeta_sec[0]) * l_mg->nr_free_lines;
683 blk_meta = DIV_ROUND_UP(sec_meta, geo->clba);
684
685 pblk->capacity = (provisioned - blk_meta) * geo->clba;
686
687 atomic_set(&pblk->rl.free_blocks, nr_free_chks);
688 atomic_set(&pblk->rl.free_user_blocks, nr_free_chks);
689
690 return 0;
691 }
692

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip